Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 2192 in orxonox.OLD for orxonox/branches/chris/src/world.cc


Ignore:
Timestamp:
Jul 17, 2004, 7:40:40 PM (21 years ago)
Author:
chris
Message:

orxonox/branches/chris: it's now possible to add derivations of Track to the World; hit function declaration finalized; implemented splash damage function (World::explosion())

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orxonox/branches/chris/src/world.cc

    r2141 r2192  
    7070                                {
    7171                                        unsigned long ahitflg, bhitflg;
    72                                         if( check_collision ( &aobj->place, aobj->collisioncluster, &ahitflg, &bobj->place, bobj->collisioncluster, &bhitflg));
     72                                        if( check_collision ( &aobj->place, aobj->collisioncluster, &ahitflg, &bobj->place, bobj->collisioncluster, &bhitflg))
    7373                                        {
    7474                                                aobj->collide (bobj, ahitflg, bhitflg);
     
    183183                        else
    184184                        {
    185                                 while( track[t].map_coords( loc, plc))
     185                                while( track[t]->map_coords( loc, plc))
    186186                                {
    187                                         track[t].post_leave (entity);
     187                                        track[t]->post_leave (entity);
    188188                                        if( loc->part >= tracklen)
    189189                                        {
     
    192192                                                break;
    193193                                        }
    194                                         track[loc->part].post_enter (entity);
     194                                        track[loc->part]->post_enter (entity);
    195195                                }
    196196                        }
     
    227227        }
    228228       
    229         for( int i = 0; i < tracklen; i++) track[i].tick (seconds);
     229        for( int i = 0; i < tracklen; i++) track[i]->tick (seconds);
    230230}
    231231
     
    255255        // create the tracks
    256256        tracklen = 6;
    257         track = new Track[6];
     257        track = new Track*[6];
    258258        for( int i = 0; i < tracklen; i++)
    259259        {
    260                 track[i] = Track( i, (i+1)%tracklen, &pathnodes[i], &pathnodes[(i+1)%tracklen]);
     260                track[i] = new Track( i, (i+1)%tracklen, &pathnodes[i], &pathnodes[(i+1)%tracklen]);
    261261        }
    262262       
     
    277277void World::calc_camera_pos (Location* loc, Placement* plc)
    278278{
    279   track[loc->part].map_camera (loc, plc);
    280 }
     279  track[loc->part]->map_camera (loc, plc);
     280}
     281
     282void World::explosion (Location* loc, Damage* dmg, float r, WorldEntity* instigator)
     283{
     284        Placement mapped;
     285       
     286        track[loc->part]->map_coords (loc, &mapped);
     287        CollisionCluster boom( r, Vector(0,0,0));
     288       
     289        unsigned long boomflags, hflags;
     290        List<WorldEntity> *a;
     291        WorldEntity *aobj;
     292       
     293        a = entities->get_next();
     294       
     295        while( a != NULL)
     296        {
     297                aobj = a->get_object();
     298                if( aobj->bCollide && aobj->collisioncluster != NULL)
     299                {
     300                        hflags = 0;
     301                        if( check_collision ( &aobj->place, aobj->collisioncluster, &hflags, &mapped, &boom, &boomflags))
     302                        {
     303                                aobj->hit (dmg, instigator, hflags);
     304                        }
     305                }
     306                a = a->get_next();
     307        }
     308}
     309
     310void World::explosion (Placement* plc, Damage* dmg, float r, WorldEntity* instigator)
     311{
     312        CollisionCluster boom( r, Vector(0,0,0));
     313       
     314        unsigned long boomflags, hflags;
     315        List<WorldEntity> *a;
     316        WorldEntity *aobj;
     317       
     318        a = entities->get_next();
     319       
     320        while( a != NULL)
     321        {
     322                aobj = a->get_object();
     323                if( aobj->bCollide && aobj->collisioncluster != NULL)
     324                {
     325                        hflags = 0;
     326                        if( check_collision ( &aobj->place, aobj->collisioncluster, &hflags, plc, &boom, &boomflags))
     327                        {
     328                                aobj->hit (dmg, instigator, hflags);
     329                        }
     330                }
     331                a = a->get_next();
     332        }
     333}
Note: See TracChangeset for help on using the changeset viewer.