Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 2, 2014, 8:38:07 PM (11 years ago)
Author:
noep
Message:

Cleaned up the process passing the collisionshape which was hit to the Pawn. Started implementation of ModularSpaceShip and ShipPart.

Location:
code/branches/modularships
Files:
2 added
20 edited

Legend:

Unmodified
Added
Removed
  • code/branches/modularships/data/levels/emptyLevel.oxw

    r10003 r10011  
    1616  include("templates/spaceshipPirate.oxt")
    1717  include("templates/spaceshipEscort.oxt")
     18  include("templates/HeavyCruiser.oxt")
    1819?>
    1920
     
    9192    </Pawn>
    9293   
     94    <ModularSpaceShip position="0,-100,-200">
     95      <templates>
     96        <Template link=spaceshippirate />
     97      </templates>
     98    </ModularSpaceShip>
     99   
     100    <ModularSpaceShip position="0,-1000,-200">
     101      <templates>
     102        <Template link=HeavyCruiser />
     103      </templates>
     104    </ModularSpaceShip>
     105   
    93106  </Scene>
    94107</Level>
  • code/branches/modularships/data/levels/templates/HeavyCruiser.oxt

    r9943 r10011  
    22
    33<Template name=HeavyCruiser>
    4   <SpaceShip
     4  <ModularSpaceShip
     5   name = HeavyCruiser
     6   
    57   hudtemplate            = spaceshiphud
    68   camerapositiontemplate = heavycruisercameras
     
    4749      <MultiStateEngine position="140,0,308" template=HeavyCruiser_sidearmR_engine1 />
    4850    </engines>
     51   
     52    <parts>
     53        <ShipPart name="part0" />
     54        <ShipPart name="part1" />
     55    </parts>
     56   
    4957    <attached>
    50 
    5158        <Model mesh="HeavyCruiser_body.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
    52         <Model mesh="HeavyCruiser_frontL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
    53         <Model mesh="HeavyCruiser_frontR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
    54         <Model mesh="HeavyCruiser_partL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
    55         <Model mesh="HeavyCruiser_partR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
    56         <Model mesh="HeavyCruiser_sidearmL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
    57         <Model mesh="HeavyCruiser_sidearmLfront.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
    58         <Model mesh="HeavyCruiser_sidearmR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
    59         <Model mesh="HeavyCruiser_sidearmRfront.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>       
     59       
     60        <StaticEntity name="frontL" position="0,0,0" direction="0,0,0" collisionType=static mass=100 friction=0.01 >
     61            <attached>
     62                <Model mesh="HeavyCruiser_frontL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
     63            </attached>
     64            <collisionShapes>
     65                <BoxCollisionShape position="-80,33,-320" halfExtents="7,11,54" info="frontL"/>
     66                <BoxCollisionShape position="-79,31,-399" halfExtents="3,6,26" info="frontL"/>
     67            </collisionShapes>
     68        </StaticEntity>
     69       
     70        <StaticEntity name="frontR" position="0,0,0" direction="0,0,0" collisionType=static mass=100 friction=0.01 >
     71            <attached>
     72                <Model mesh="HeavyCruiser_frontR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
     73            </attached>
     74            <collisionShapes>
     75                <BoxCollisionShape position="80,33,-320" halfExtents="7,11,54" info="frontR"/>
     76                <BoxCollisionShape position="79,31,-399" halfExtents="3,6,26" info="frontR"/>
     77            </collisionShapes>
     78        </StaticEntity>
     79       
     80        <StaticEntity name="partL" position="0,0,0" direction="0,0,0" collisionType=static mass=100 friction=0.01 >
     81            <attached>
     82                <Model mesh="HeavyCruiser_partL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
     83            </attached>
     84            <collisionShapes>
     85                <BoxCollisionShape position="-94,33,-179" halfExtents="11,13,45" info="partL"/>
     86                <BoxCollisionShape position="-96,33,-230" halfExtents="13,17,22" info="partL"/>
     87            </collisionShapes>
     88        </StaticEntity>
     89       
     90        <StaticEntity name="partR" position="0,0,0" direction="0,0,0" collisionType=static mass=100 friction=0.01 >
     91            <attached>
     92                <Model mesh="HeavyCruiser_partR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
     93            </attached>
     94            <collisionShapes>
     95                <BoxCollisionShape position="94,33,-179" halfExtents="11,13,45" info="partR"/>
     96                <BoxCollisionShape position="96,33,-230" halfExtents="13,17,22" info="partR"/>
     97            </collisionShapes>
     98        </StaticEntity>
     99       
     100                <StaticEntity name="sidearmL" position="0,0,0" direction="0,0,0" collisionType=static mass=100 friction=0.01 >
     101            <attached>
     102                <Model mesh="HeavyCruiser_sidearmL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
     103            </attached>
     104            <collisionShapes>
     105                <BoxCollisionShape position="-109,47,87" halfExtents="29,8,26" info="sidearmL, upper connection"/>
     106                <BoxCollisionShape position="-99,-1,79" roll="15" halfExtents="40,4,9" info="sidearmL, lower connection"/>
     107                <BoxCollisionShape position="-145,21,115" roll="15" halfExtents="19,31,105" info="sidearmL, front"/>
     108                <BoxCollisionShape position="-140,12,261" roll="15" halfExtents="22,41,43" info="sidearmL, back"/>
     109                <BoxCollisionShape position="-145,25,5" roll="15" halfExtents="10,18,5" info="sidearmL, front break"/>
     110                <BoxCollisionShape position="-133,-13,29" roll="15" halfExtents="12,6,17" info="sidearmL, bottom cylinder"/>
     111                <BoxCollisionShape position="-165,-4,31" roll="15" halfExtents="7,21,13" info="sidearmL, box"/>
     112                <BoxCollisionShape position="-153,59,96" roll="15" halfExtents="6,7,60" info="sidearmL, upper beam"/>
     113                <BoxCollisionShape position="-143,57,119" roll="15" halfExtents="3,4,85" info="sidearmL, upper inner beam"/>
     114                <BoxCollisionShape position="-142,53,212" pitch="21" yaw="5" roll="15" halfExtents="3,4,10" info="sidearmL, upper inner beam"/>
     115                <BoxCollisionShape position="-160,52,119" roll="15" halfExtents="3,4,85" info="sidearmL, upper outer beam"/>
     116                <BoxCollisionShape position="-159,48,212" pitch="21" yaw="5" roll="15" halfExtents="3,4,10" info="sidearmL, upper outer beam"/>
     117                <BoxCollisionShape position="-152,54,34" pitch="-46" yaw="-14" roll="15" halfExtents="6,7,10" info="sidearmL, upper beam front"/>
     118                <BoxCollisionShape position="-152,54,162" pitch="30" yaw="9" roll="15" halfExtents="6,7,12" info="sidearmL, upper beam back"/>
     119                <BoxCollisionShape position="-168,21,119" roll="15" halfExtents="3,5,109" info="sidearmL, outer beam"/>
     120                <BoxCollisionShape position="-134,-10,169" roll="15" halfExtents="6,4,55" info="sidearmL, lower beam front"/>
     121                <BoxCollisionShape position="-131,-20,217" pitch="-20" roll="15" yaw="-5" halfExtents="6,12,3" info="sidearmL, lower beam middle"/>
     122                <BoxCollisionShape position="-130,-29,233" roll="15" halfExtents="6,3,15" info="sidearmL, lower beam back"/>
     123            </collisionShapes>
     124        </StaticEntity>
     125       
     126        <StaticEntity name="sidearmLfront" position="0,0,0" direction="0,0,0" collisionType=static mass=100 friction=0.01 >
     127            <attached>
     128                <Model mesh="HeavyCruiser_sidearmLfront.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
     129            </attached>
     130            <collisionShapes>
     131                <BoxCollisionShape position="-141,15,-53" roll="15" halfExtents="27,44,62" info="sidearmLfront"/>
     132                <BoxCollisionShape position="-153,59,-30" roll="15" halfExtents="4,2,38" info="sidearmLfront, top"/>
     133                <BoxCollisionShape position="-153,61,-41" roll="15" halfExtents="4,4,11" info="sidearmLfront, top"/>
     134                <BoxCollisionShape position="-153,60,-65" roll="15" halfExtents="4,3,4" info="sidearmLfront, top"/>
     135                <BoxCollisionShape position="-153,59,-41" roll="15" halfExtents="8,2,11" info="sidearmLfront, top"/>
     136            </collisionShapes>
     137        </StaticEntity>
     138       
     139        <StaticEntity name="sidearmR" position="0,0,0" direction="0,0,0" collisionType=static mass=100 friction=0.01 >
     140            <attached>
     141                <Model mesh="HeavyCruiser_sidearmR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
     142            </attached>
     143            <collisionShapes>
     144                <BoxCollisionShape position="109,47,87" halfExtents="29,8,26" info="sidearmR, upper connection"/>
     145                <BoxCollisionShape position="99,-1,79" roll="-15" halfExtents="40,4,9" info="sidearmR, lower connection"/>
     146                <BoxCollisionShape position="145,21,115" roll="-15" halfExtents="19,31,105" info="sidearmR, front"/>
     147                <BoxCollisionShape position="140,12,261" roll="-15" halfExtents="22,41,43" info="sidearmR, back"/>
     148                <BoxCollisionShape position="145,25,5" roll="-15" halfExtents="10,18,5" info="sidearmR, front break"/>
     149                <BoxCollisionShape position="133,-13,29" roll="-15" halfExtents="12,6,17" info="sidearmR, bottom cylinder"/>
     150                <BoxCollisionShape position="165,-4,31" roll="-15" halfExtents="7,21,13" info="sidearmR, box"/>
     151                <BoxCollisionShape position="153,59,96" roll="-15" halfExtents="6,7,60" info="sidearmR, upper beam"/>
     152                <BoxCollisionShape position="143,57,119" roll="-15" halfExtents="3,4,85" info="sidearmR, upper inner beam"/>
     153                <BoxCollisionShape position="142,53,212" pitch="21" yaw="-5" roll="-15" halfExtents="3,4,10" info="sidearmR, upper inner beam"/>
     154                <BoxCollisionShape position="160,52,119" roll="-15" halfExtents="3,4,85" info="sidearmR, upper outer beam"/>
     155                <BoxCollisionShape position="159,48,212" pitch="21" yaw="-5" roll="-15" halfExtents="3,4,10" info="sidearmR, upper outer beam"/>
     156                <BoxCollisionShape position="152,54,34" pitch="-46" yaw="14" roll="-15" halfExtents="6,7,10" info="sidearmR, upper beam front"/>
     157                <BoxCollisionShape position="152,54,162" pitch="30" yaw="-9" roll="-15" halfExtents="6,7,12" info="sidearmR, upper beam back"/>
     158                <BoxCollisionShape position="168,21,119" roll="-15" halfExtents="3,5,109" info="sidearmR, outer beam"/>
     159                <BoxCollisionShape position="134,-10,169" roll="-15" halfExtents="6,4,55" info="sidearmR, lower beam front"/>
     160                <BoxCollisionShape position="131,-20,217" pitch="-20" roll="-15" yaw="5" halfExtents="6,12,3" info="sidearmR, lower beam middle"/>
     161                <BoxCollisionShape position="130,-29,233" roll="-15" halfExtents="6,3,15" info="sidearmR, lower beam back"/>
     162            </collisionShapes>
     163        </StaticEntity>
     164       
     165        <StaticEntity name="sidearmRfront" position="0,0,0" direction="0,0,0" collisionType=static mass=100 friction=0.01 >
     166            <attached>
     167                <Model mesh="HeavyCruiser_sidearmRfront.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
     168            </attached>
     169            <collisionShapes>
     170                <BoxCollisionShape position="141,15,-53" roll="-15" halfExtents="27,44,62" info="sidearmRfront"/>
     171                <BoxCollisionShape position="153,59,-30" roll="-15" halfExtents="4,2,38" info="sidearmRfront, top"/>
     172                <BoxCollisionShape position="153,61,-41" roll="-15" halfExtents="4,4,11" info="sidearmRfront, top"/>
     173                <BoxCollisionShape position="153,60,-65" roll="-15" halfExtents="4,3,4" info="sidearmRfront, top"/>
     174                <BoxCollisionShape position="153,59,-41" roll="-15" halfExtents="8,2,11" info="sidearmRfront, top"/>
     175            </collisionShapes>
     176        </StaticEntity>   
    60177
    61178            <!-- bay1 lights -->
     
    79196    </attached>
    80197    <collisionShapes>
    81         <BoxCollisionShape position="80,33,-320" halfExtents="7,11,54" info="frontR"/>
    82         <BoxCollisionShape position="79,31,-399" halfExtents="3,6,26" info="frontR"/>
    83 
    84 
    85         <BoxCollisionShape position="-80,33,-320" halfExtents="7,11,54" info="frontL"/>
    86         <BoxCollisionShape position="-79,31,-399" halfExtents="3,6,26" info="frontL"/>
    87 
    88 
    89         <BoxCollisionShape position="94,33,-179" halfExtents="11,13,45" info="partR"/>
    90         <BoxCollisionShape position="96,33,-230" halfExtents="13,17,22" info="partR"/>
    91 
    92 
    93         <BoxCollisionShape position="-94,33,-179" halfExtents="11,13,45" info="partL"/>
    94         <BoxCollisionShape position="-96,33,-230" halfExtents="13,17,22" info="partL"/>
    95 
    96 
    97         <BoxCollisionShape position="109,47,87" halfExtents="29,8,26" info="sidearmR, upper connection"/>
    98         <BoxCollisionShape position="99,-1,79" roll="-15" halfExtents="40,4,9" info="sidearmR, lower connection"/>
    99         <BoxCollisionShape position="145,21,115" roll="-15" halfExtents="19,31,105" info="sidearmR, front"/>
    100         <BoxCollisionShape position="140,12,261" roll="-15" halfExtents="22,41,43" info="sidearmR, back"/>
    101         <BoxCollisionShape position="145,25,5" roll="-15" halfExtents="10,18,5" info="sidearmR, front break"/>
    102         <BoxCollisionShape position="133,-13,29" roll="-15" halfExtents="12,6,17" info="sidearmR, bottom cylinder"/>
    103         <BoxCollisionShape position="165,-4,31" roll="-15" halfExtents="7,21,13" info="sidearmR, box"/>
    104         <BoxCollisionShape position="153,59,96" roll="-15" halfExtents="6,7,60" info="sidearmR, upper beam"/>
    105         <BoxCollisionShape position="143,57,119" roll="-15" halfExtents="3,4,85" info="sidearmR, upper inner beam"/>
    106         <BoxCollisionShape position="142,53,212" pitch="21" yaw="-5" roll="-15" halfExtents="3,4,10" info="sidearmR, upper inner beam"/>
    107         <BoxCollisionShape position="160,52,119" roll="-15" halfExtents="3,4,85" info="sidearmR, upper outer beam"/>
    108         <BoxCollisionShape position="159,48,212" pitch="21" yaw="-5" roll="-15" halfExtents="3,4,10" info="sidearmR, upper outer beam"/>
    109         <BoxCollisionShape position="152,54,34" pitch="-46" yaw="14" roll="-15" halfExtents="6,7,10" info="sidearmR, upper beam front"/>
    110         <BoxCollisionShape position="152,54,162" pitch="30" yaw="-9" roll="-15" halfExtents="6,7,12" info="sidearmR, upper beam back"/>
    111         <BoxCollisionShape position="168,21,119" roll="-15" halfExtents="3,5,109" info="sidearmR, outer beam"/>
    112         <BoxCollisionShape position="134,-10,169" roll="-15" halfExtents="6,4,55" info="sidearmR, lower beam front"/>
    113         <BoxCollisionShape position="131,-20,217" pitch="-20" roll="-15" yaw="5" halfExtents="6,12,3" info="sidearmR, lower beam middle"/>
    114         <BoxCollisionShape position="130,-29,233" roll="-15" halfExtents="6,3,15" info="sidearmR, lower beam back"/>
    115 
    116 
    117         <BoxCollisionShape position="141,15,-53" roll="-15" halfExtents="27,44,62" info="sidearmRfront"/>
    118         <BoxCollisionShape position="153,59,-30" roll="-15" halfExtents="4,2,38" info="sidearmRfront, top"/>
    119         <BoxCollisionShape position="153,61,-41" roll="-15" halfExtents="4,4,11" info="sidearmRfront, top"/>
    120         <BoxCollisionShape position="153,60,-65" roll="-15" halfExtents="4,3,4" info="sidearmRfront, top"/>
    121         <BoxCollisionShape position="153,59,-41" roll="-15" halfExtents="8,2,11" info="sidearmRfront, top"/>
    122 
    123 
    124         <BoxCollisionShape position="-109,47,87" halfExtents="29,8,26" info="sidearmL, upper connection"/>
    125         <BoxCollisionShape position="-99,-1,79" roll="15" halfExtents="40,4,9" info="sidearmL, lower connection"/>
    126         <BoxCollisionShape position="-145,21,115" roll="15" halfExtents="19,31,105" info="sidearmL, front"/>
    127         <BoxCollisionShape position="-140,12,261" roll="15" halfExtents="22,41,43" info="sidearmL, back"/>
    128         <BoxCollisionShape position="-145,25,5" roll="15" halfExtents="10,18,5" info="sidearmL, front break"/>
    129         <BoxCollisionShape position="-133,-13,29" roll="15" halfExtents="12,6,17" info="sidearmL, bottom cylinder"/>
    130         <BoxCollisionShape position="-165,-4,31" roll="15" halfExtents="7,21,13" info="sidearmL, box"/>
    131         <BoxCollisionShape position="-153,59,96" roll="15" halfExtents="6,7,60" info="sidearmL, upper beam"/>
    132         <BoxCollisionShape position="-143,57,119" roll="15" halfExtents="3,4,85" info="sidearmL, upper inner beam"/>
    133         <BoxCollisionShape position="-142,53,212" pitch="21" yaw="5" roll="15" halfExtents="3,4,10" info="sidearmL, upper inner beam"/>
    134         <BoxCollisionShape position="-160,52,119" roll="15" halfExtents="3,4,85" info="sidearmL, upper outer beam"/>
    135         <BoxCollisionShape position="-159,48,212" pitch="21" yaw="5" roll="15" halfExtents="3,4,10" info="sidearmL, upper outer beam"/>
    136         <BoxCollisionShape position="-152,54,34" pitch="-46" yaw="-14" roll="15" halfExtents="6,7,10" info="sidearmL, upper beam front"/>
    137         <BoxCollisionShape position="-152,54,162" pitch="30" yaw="9" roll="15" halfExtents="6,7,12" info="sidearmL, upper beam back"/>
    138         <BoxCollisionShape position="-168,21,119" roll="15" halfExtents="3,5,109" info="sidearmL, outer beam"/>
    139         <BoxCollisionShape position="-134,-10,169" roll="15" halfExtents="6,4,55" info="sidearmL, lower beam front"/>
    140         <BoxCollisionShape position="-131,-20,217" pitch="-20" roll="15" yaw="-5" halfExtents="6,12,3" info="sidearmL, lower beam middle"/>
    141         <BoxCollisionShape position="-130,-29,233" roll="15" halfExtents="6,3,15" info="sidearmL, lower beam back"/>
    142 
    143 
    144         <BoxCollisionShape position="-141,15,-53" roll="15" halfExtents="27,44,62" info="sidearmLfront"/>
    145         <BoxCollisionShape position="-153,59,-30" roll="15" halfExtents="4,2,38" info="sidearmLfront, top"/>
    146         <BoxCollisionShape position="-153,61,-41" roll="15" halfExtents="4,4,11" info="sidearmLfront, top"/>
    147         <BoxCollisionShape position="-153,60,-65" roll="15" halfExtents="4,3,4" info="sidearmLfront, top"/>
    148         <BoxCollisionShape position="-153,59,-41" roll="15" halfExtents="8,2,11" info="sidearmLfront, top"/>
    149 
    150 
    151198        <BoxCollisionShape position="60,35,-310" halfExtents="13,28,60" info="body, bay1, Rwall"/>
    152199        <BoxCollisionShape position="-60,35,-310" halfExtents="13,28,60" info="body, bay1, Lwall"/>
     
    293340  include("../includes/weaponSettingsHeavyCruiser.oxi")
    294341?>
    295   </SpaceShip>
     342  </ModularSpaceShip>
    296343
    297344</Template>
  • code/branches/modularships/src/modules/weapons/projectiles/BasicProjectile.cc

    r9995 r10011  
    7878    @see Pawn.h
    7979    */
    80     bool BasicProjectile::processCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint)
     80    bool BasicProjectile::processCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint, const btCollisionShape* cs)
    8181    {
    8282        if (!this->bDestroy_ && GameMode::isMaster())
     
    9696            if (victim)
    9797            {
    98                 victim->hit(this->getShooter(), contactPoint, this->getDamage(), this->getHealthDamage(), this->getShieldDamage());
     98                victim->hit(this->getShooter(), contactPoint, cs, this->getDamage(), this->getHealthDamage(), this->getShieldDamage());
    9999                victim->startReloadCountdown();
    100100            }
     
    141141    }
    142142
    143     bool BasicProjectile::customProcessCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint, const btCollisionShape* cs)
    144         {
    145             if (!this->bDestroy_ && GameMode::isMaster())
    146             {
    147                 if (otherObject == this->getShooter()) // Prevents you from shooting yourself
    148                     return false;
    149 
    150                 this->bDestroy_ = true; // If something is hit, the object is destroyed and can't hit something else.
    151                                         // The projectile is destroyed by its tick()-function (in the following tick).
    152 
    153                 Pawn* victim = orxonox_cast<Pawn*>(otherObject); // If otherObject isn't a Pawn, then victim is NULL
    154 
    155                 WorldEntity* entity = orxonox_cast<WorldEntity*>(this);
    156                 assert(entity); // The projectile must not be a WorldEntity.
    157 
    158                 // If visual effects after destruction cause problems, put this block below the effects code block
    159                 if (victim)
    160                 {
    161                     victim->customHit(this->getShooter(), contactPoint, cs, this->getDamage(), this->getHealthDamage(), this->getShieldDamage());
    162                     victim->startReloadCountdown();
    163                 }
    164 
    165                 // Visual effects for being hit, depending on whether the shield is hit or not
    166                 if (this->getShooter()) // If the owner does not exist (anymore?), no effects are displayed.
    167                 {
    168                     // Damping and explosion effect is only played if the victim is no Pawn (see cast above)
    169                     // or if the victim is a Pawn, has no shield left, is still alive and any damage goes to the health
    170                     if (!victim || (victim && !victim->hasShield() && victim->getHealth() > 0.0f && (this->getDamage() > 0.0f || this->getHealthDamage() > 0.0f)))
    171                     {
    172                         {
    173                             ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getContext());
    174                             effect->setPosition(entity->getPosition());
    175                             effect->setOrientation(entity->getOrientation());
    176                             effect->setDestroyAfterLife(true);
    177                             effect->setSource("Orxonox/explosion3");
    178                             effect->setLifetime(2.0f);
    179                         }
    180                         // Second effect with same condition
    181                         {
    182                             ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getContext());
    183                             effect->setPosition(entity->getPosition());
    184                             effect->setOrientation(entity->getOrientation());
    185                             effect->setDestroyAfterLife(true);
    186                             effect->setSource("Orxonox/smoke4");
    187                             effect->setLifetime(3.0f);
    188                         }
    189                     }
    190 
    191                     // victim->isAlive() is not false until the next tick, so getHealth() > 0 is used instead
    192                     if (victim && victim->hasShield() && (this->getDamage() > 0.0f || this->getShieldDamage() > 0.0f) && victim->getHealth() > 0.0f)
    193                     {
    194                         ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getContext());
    195                         effect->setDestroyAfterLife(true);
    196                         effect->setSource("Orxonox/Shield");
    197                         effect->setLifetime(0.5f);
    198                         victim->attach(effect);
    199                     }
    200                 }
    201                 return true;
    202             }
    203             return false;
    204         }
    205143
    206144    /**
  • code/branches/modularships/src/modules/weapons/projectiles/BasicProjectile.h

    r9995 r10011  
    119119
    120120        protected:
    121             bool processCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint);
    122             bool customProcessCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint, const btCollisionShape* cs);
     121            bool processCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint, const btCollisionShape* cs);
    123122            void destroyCheck(void);
    124123
  • code/branches/modularships/src/modules/weapons/projectiles/Projectile.cc

    r9995 r10011  
    8888    }
    8989
    90     bool Projectile::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
     90    bool Projectile::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint)
    9191    {
    92         return this->processCollision(otherObject, contactPoint);
    93     }
    94 
    95     bool Projectile::customCollidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint)
    96     {
    97         return this->customProcessCollision(otherObject, contactPoint, cs);
     92        return this->processCollision(otherObject, contactPoint, cs);
    9893    }
    9994
  • code/branches/modularships/src/modules/weapons/projectiles/Projectile.h

    r9995 r10011  
    6464
    6565            virtual void tick(float dt);
    66             virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
    67             virtual bool customCollidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
     66            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
    6867
    6968        private:
  • code/branches/modularships/src/modules/weapons/projectiles/Rocket.cc

    r9995 r10011  
    191191    }
    192192
    193     bool Rocket::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
    194     {
    195         return this->processCollision(otherObject, contactPoint);
    196     }
    197 
    198     bool Rocket::customCollidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint)
    199     {
    200         return this->customProcessCollision(otherObject, contactPoint, cs);
     193    bool Rocket::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint)
     194    {
     195        return this->processCollision(otherObject, contactPoint, cs);
    201196    }
    202197
  • code/branches/modularships/src/modules/weapons/projectiles/Rocket.h

    r9995 r10011  
    6464            virtual void tick(float dt); //!< Defines which actions the Rocket has to take in each tick.
    6565
    66             virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
    67             virtual bool customCollidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
     66            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
    6867            virtual void destroyObject(void);
    6968            void destructionEffect();
  • code/branches/modularships/src/modules/weapons/projectiles/SimpleRocket.cc

    r9995 r10011  
    172172    }
    173173
    174     bool SimpleRocket::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
    175     {
    176         return this->processCollision(otherObject, contactPoint);
    177     }
    178 
    179     bool SimpleRocket::customCollidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint)
    180     {
    181         return this->customProcessCollision(otherObject, contactPoint, cs);
     174    bool SimpleRocket::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint)
     175    {
     176        return this->processCollision(otherObject, contactPoint, cs);
    182177    }
    183178
  • code/branches/modularships/src/modules/weapons/projectiles/SimpleRocket.h

    r9995 r10011  
    6464            virtual void tick(float dt);
    6565
    66             virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
    67             virtual bool customCollidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
     66            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
    6867
    6968            void disableFire(); //!< Method to disable the fire and stop all acceleration
  • code/branches/modularships/src/orxonox/CMakeLists.txt

    r9348 r10011  
    3232  PlayerManager.cc
    3333  Radar.cc
     34  ShipPart.cc
    3435#  Test.cc
    3536
  • code/branches/modularships/src/orxonox/Scene.cc

    r9996 r10011  
    201201            // Note: This is a global variable which we assign a static function.
    202202            // TODO: Check whether this (or anything about Bullet) works with multiple physics engine instances.
    203             gContactAddedCallback = &Scene::customCollisionCallback;
     203            gContactAddedCallback = &Scene::collisionCallback;
    204204        }
    205205        else if (!wantPhysics && hasPhysics())
     
    349349        SmartPtr<WorldEntity> object1 = static_cast<WorldEntity*>(colObj1->getUserPointer());
    350350
     351        // get the CollisionShape pointers
     352        const btCollisionShape* cs0 = colObj0->getCollisionShape();
     353        const btCollisionShape* cs1 = colObj1->getCollisionShape();
     354
    351355        // false means that bullet will assume we didn't modify the contact
    352356        bool modified = false;
    353357        if (object0->isCollisionCallbackActive())
    354             modified |= object0->collidesAgainst(object1, cp);
     358            modified |= object0->collidesAgainst(object1, cs1, cp);
    355359        if (object1->isCollisionCallbackActive())
    356             modified |= object1->collidesAgainst(object0, cp);
     360            modified |= object1->collidesAgainst(object0, cs0, cp);
    357361
    358362        return modified;
    359363    }
    360 
    361     /* ADDED static*/ bool Scene::customCollisionCallback(btManifoldPoint& cp, const btCollisionObject* colObj0, int partId0,
    362                                              int index0, const btCollisionObject* colObj1, int partId1, int index1)
    363     {
    364         // get the WorldEntity pointers
    365         SmartPtr<WorldEntity> object0 = static_cast<WorldEntity*>(colObj0->getUserPointer());
    366         SmartPtr<WorldEntity> object1 = static_cast<WorldEntity*>(colObj1->getUserPointer());
    367 
    368         // get the CollisionShape pointers
    369         const btCollisionShape* cs0 = colObj0->getCollisionShape();
    370         const btCollisionShape* cs1 = colObj1->getCollisionShape();
    371 
    372         // false means that bullet will assume we didn't modify the contact
    373         bool modified = false;
    374         if (object0->isCollisionCallbackActive())
    375             modified |= object0->customCollidesAgainst(object1, cs1, cp);
    376         if (object1->isCollisionCallbackActive())
    377             modified |= object1->customCollidesAgainst(object0, cs0, cp);
    378 
    379         return modified;
    380     }
    381364}
  • code/branches/modularships/src/orxonox/ShipPart.cc

    r10007 r10011  
    3535#include "core/XMLPort.h"
    3636#include "network/NetworkFunction.h"
     37#include "items/Item.h"
     38#include "worldentities/pawns/Pawn.h"
     39#include "gametypes/Gametype.h"
     40#include "worldentities/pawns/ModularSpaceShip.h"
    3741
    3842
     
    4246
    4347    ShipPart::ShipPart(Context* context)
     48        : Item(context)
    4449    {
    45         //RegisterObject(ShipPart);
     50        RegisterObject(ShipPart);
    4651    }
    4752
     
    5156    }
    5257
     58
     59    /**
     60    @brief
     61        Add a StaticEntity to the ShipPart.
     62    @param engine
     63        A pointer to the StaticEntity to be added.
     64    */
     65    void ShipPart::addEntity(StaticEntity* entity)
     66    {
     67        OrxAssert(entity != NULL, "The Entity cannot be NULL.");
     68        this->entityList_.push_back(entity);
     69        //part->addToSpaceShip(this); //FIXME: (noep) add
     70    }
     71
     72    /**
     73    @brief
     74        Get the i-th StaticEntity of the ShipPart.
     75    @return
     76        Returns a pointer to the i-the StaticEntity. NULL if there is no StaticEntity with that index.
     77    */
     78    StaticEntity* ShipPart::getEntity(unsigned int index)
     79    {
     80        if(this->entityList_.size() >= index)
     81            return NULL;
     82        else
     83            return this->entityList_[index];
     84    }
     85
     86    void ShipPart::setDamageAbsorption(float value)
     87    {
     88        this->damageAbsorption_ = value;
     89    }
     90
     91    /**
     92    @brief
     93        Sets the health of the ShipPart.
     94    */
     95    void ShipPart::setHealth(float health)
     96    {
     97        this->health_ = health;
     98    }
     99
     100    /**
     101    @brief
     102        Handles a received hit.
     103    */
     104    void ShipPart::handleHit(float damage, float healthdamage, float shielddamage, Pawn* originator)
     105    {
     106        if (parent_->getGametype() && parent_->getGametype()->allowPawnDamage(parent_, originator))
     107        {
     108            if (shielddamage >= parent_->getShieldHealth())
     109            {
     110                parent_->setShieldHealth(0);
     111                this->setHealth(this->health_ - (healthdamage + damage) * this->damageAbsorption_);
     112                parent_->setHealth(parent_->getHealth() - (healthdamage + damage) * (1 - this->damageAbsorption_));
     113            }
     114            else
     115            {
     116                parent_->setShieldHealth(parent_->getShieldHealth() - shielddamage);
     117
     118                // remove remaining shieldAbsorpton-Part of damage from shield
     119                shielddamage = damage * parent_->getShieldAbsorption();
     120                shielddamage = std::min(parent_->getShieldHealth(),shielddamage);
     121                parent_->setShieldHealth(parent_->getShieldHealth() - shielddamage);
     122
     123                // set remaining damage to health
     124                this->setHealth(this->health_ - ((damage - shielddamage) - healthdamage) * this->damageAbsorption_);
     125                parent_->setHealth(parent_->getHealth() - ((damage - shielddamage) - healthdamage) * (1- this->damageAbsorption_));
     126            }
     127        }
     128    }
     129
     130
     131    /**
     132    @brief
     133        Adds the ShipPart to the input SpaceShip.
     134    @param ship
     135        A pointer to the SpaceShip to which the ShipPart is added.
     136    */
     137    /*void ShipPart::addToSpaceShip(ModularSpaceShip* ship)
     138    {
     139        this->parent_ = ship;
     140
     141        if (ship)
     142        {
     143            this->parentID_ = ship->getObjectID();
     144            if (!ship->hasShipPart(this))
     145                ship->addShipPart(this);
     146        }
     147    }*/
     148
    53149}
  • code/branches/modularships/src/orxonox/ShipPart.h

    r10007 r10011  
    3131
    3232#include "OrxonoxPrereqs.h"
     33#include "items/Item.h"
    3334
    3435#include <string>
     
    3839{ // tolua_export
    3940    class _OrxonoxExport ShipPart // tolua_export
     41        : public Item
    4042    { // tolua_export
    4143
     
    4446            virtual ~ShipPart();
    4547
     48            //virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     49
     50            virtual void handleHit(float damage, float healthdamage, float shielddamage, Pawn* originator);
     51
     52            //virtual void attachTo(Pawn* newParent);
     53            //virtual void detach();
     54
     55            void addEntity(StaticEntity* entity);
     56            StaticEntity* getEntity(unsigned int index);
     57
     58            virtual void setDamageAbsorption(float value);
     59            inline float getDamageAbsorption()
     60                { return this->damageAbsorption_; }
     61
     62            virtual void setHealth(float health);
     63            inline void addHealth(float health)
     64                { this->setHealth(this->health_ + health); }
     65            inline void removeHealth(float health)
     66                { this->setHealth(this->health_ - health); }
     67            inline float getHealth() const
     68                { return this->health_; }
     69
     70            // FIXME: (noep) Why doesn't this work? Works fine in Engine.h
     71            //void addToSpaceShip(ModularSpaceShip* ship);
     72
    4673        protected:
     74            Pawn* parent_;
     75            unsigned int parentID_; // Object ID of the SpaceShip the Part is mounted on.
    4776
     77            float damageAbsorption_;
     78            float health_;
    4879
    4980        private:
    50 
     81            std::vector<StaticEntity*> entityList_; // list of all entities which belong to this part
    5182
    5283    }; // tolua_export
  • code/branches/modularships/src/orxonox/worldentities/MovableEntity.cc

    r9995 r10011  
    7272    }
    7373
    74     bool MovableEntity::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
     74    bool MovableEntity::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
    7575    {
    7676        if (GameMode::isMaster() && enableCollisionDamage_)
     
    8080            {
    8181                float damage = this->collisionDamage_ * (victim->getVelocity() - this->getVelocity()).length();
    82                 victim->hit(0, contactPoint, damage);
     82                victim->hit(0, contactPoint, ownCollisionShape, damage);
    8383            }
    8484        }
     
    8686        return false;
    8787    }
    88 
    89     bool MovableEntity::customCollidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
    90     {
    91         if (GameMode::isMaster() && enableCollisionDamage_)
    92         {
    93             Pawn* victim = orxonox_cast<Pawn*>(otherObject);
    94             if (victim)
    95             {
    96                 float damage = this->collisionDamage_ * (victim->getVelocity() - this->getVelocity()).length();
    97                 victim->customHit(0, contactPoint, ownCollisionShape, damage);
    98             }
    99         }
    100 
    101         return false;
    102     }
    103 
    10488
    10589    void MovableEntity::registerVariables()
  • code/branches/modularships/src/orxonox/worldentities/MovableEntity.h

    r9995 r10011  
    4747
    4848            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
    49             virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
    50             virtual bool customCollidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
     49            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
    5150
    5251            using WorldEntity::setPosition;
  • code/branches/modularships/src/orxonox/worldentities/WorldEntity.h

    r9997 r10011  
    374374                Condition is that enableCollisionCallback() was called.
    375375            */
    376             virtual inline bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
    377                 { return false; } /* With false, Bullet assumes no modification to the collision objects. */
    378 
    379             virtual inline bool customCollidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
     376            virtual inline bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
    380377                { return false; } /* With false, Bullet assumes no modification to the collision objects. */
    381378
  • code/branches/modularships/src/orxonox/worldentities/pawns/CMakeLists.txt

    r7163 r10011  
    44  Pawn.cc
    55  SpaceShip.cc
     6  ModularSpaceShip.cc
    67  TeamBaseMatchBase.cc
    78  Destroyer.cc
  • code/branches/modularships/src/orxonox/worldentities/pawns/Pawn.cc

    r10007 r10011  
    250250    }
    251251
    252     void Pawn::damage(float damage, float healthdamage, float shielddamage, Pawn* originator)
    253     {
     252    void Pawn::damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs)
     253    {
     254        orxout() << "damage(): Collision detected on " << this->getName() << ", btCS*: " << cs << endl;
     255
     256        int collisionShapeIndex = this->isMyCollisionShape(cs);
     257        orxout() << collisionShapeIndex << endl;
     258
    254259        // Applies multiplier given by the DamageBoost Pickup.
    255260        if (originator)
     
    280285    }
    281286
    282     void Pawn::customDamage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs)
    283     {
    284         orxout() << "damage(): Collision detected on " << this->getRadarName() << ", btCS*: " << cs << endl;
    285 
    286         int collisionShapeIndex = this->isMyCollisionShape(cs);
    287         orxout() << collisionShapeIndex << endl;
    288 
    289         // Applies multiplier given by the DamageBoost Pickup.
    290         if (originator)
    291             damage *= originator->getDamageMultiplier();
    292 
    293         if (this->getGametype() && this->getGametype()->allowPawnDamage(this, originator))
    294         {
    295             if (shielddamage >= this->getShieldHealth())
    296             {
    297                 this->setShieldHealth(0);
    298                 this->setHealth(this->health_ - (healthdamage + damage));
    299             }
    300             else
    301             {
    302                 this->setShieldHealth(this->shieldHealth_ - shielddamage);
    303 
    304                 // remove remaining shieldAbsorpton-Part of damage from shield
    305                 shielddamage = damage * this->shieldAbsorption_;
    306                 shielddamage = std::min(this->getShieldHealth(),shielddamage);
    307                 this->setShieldHealth(this->shieldHealth_ - shielddamage);
    308 
    309                 // set remaining damage to health
    310                 this->setHealth(this->health_ - (damage - shielddamage) - healthdamage);
    311             }
    312 
    313             this->lastHitOriginator_ = originator;
    314         }
    315     }
    316 
    317287// TODO: Still valid?
    318288/* HIT-Funktionen
     
    320290
    321291*/
    322     void Pawn::hit(Pawn* originator, const Vector3& force, float damage, float healthdamage, float shielddamage)
     292    void Pawn::hit(Pawn* originator, const Vector3& force, const btCollisionShape* cs, float damage, float healthdamage, float shielddamage)
    323293    {
    324294        if (this->getGametype() && this->getGametype()->allowPawnHit(this, originator) && (!this->getController() || !this->getController()->getGodMode()) )
    325295        {
    326             this->damage(damage, healthdamage, shielddamage, originator);
     296            this->damage(damage, healthdamage, shielddamage, originator, cs);
    327297            this->setVelocity(this->getVelocity() + force);
    328298        }
    329299    }
    330300
    331     void Pawn::customHit(Pawn* originator, const Vector3& force, const btCollisionShape* cs, float damage, float healthdamage, float shielddamage)
     301    void Pawn::hit(Pawn* originator, btManifoldPoint& contactpoint, const btCollisionShape* cs, float damage, float healthdamage, float shielddamage)
    332302    {
    333303        if (this->getGametype() && this->getGametype()->allowPawnHit(this, originator) && (!this->getController() || !this->getController()->getGodMode()) )
    334304        {
    335             this->customDamage(damage, healthdamage, shielddamage, originator, cs);
    336             this->setVelocity(this->getVelocity() + force);
    337         }
    338     }
    339 
    340     void Pawn::hit(Pawn* originator, btManifoldPoint& contactpoint, float damage, float healthdamage, float shielddamage)
    341     {
    342         if (this->getGametype() && this->getGametype()->allowPawnHit(this, originator) && (!this->getController() || !this->getController()->getGodMode()) )
    343         {
    344             this->damage(damage, healthdamage, shielddamage, originator);
    345 
    346             if ( this->getController() )
    347                 this->getController()->hit(originator, contactpoint, damage); // changed to damage, why shielddamage?
    348         }
    349     }
    350 
    351     void Pawn::customHit(Pawn* originator, btManifoldPoint& contactpoint, const btCollisionShape* cs, float damage, float healthdamage, float shielddamage)
    352     {
    353         if (this->getGametype() && this->getGametype()->allowPawnHit(this, originator) && (!this->getController() || !this->getController()->getGodMode()) )
    354         {
    355             this->customDamage(damage, healthdamage, shielddamage, originator, cs);
     305            this->damage(damage, healthdamage, shielddamage, originator, cs);
    356306
    357307            if ( this->getController() )
     
    620570    }
    621571
    622     // WIP function that (once I get it working) determines to which attached entity a collisionshape belongs.
    623     // Shame that this doesn't seem to work as intended. It behaves differently (different number of childshapes) every reload. D:
     572
    624573    int Pawn::isMyCollisionShape(const btCollisionShape* cs)
    625574    {
     
    628577
    629578        // e.g. "Box 4: Searching for CS 0x1ad49200"
    630         orxout() << this->getRadarName() << ": Searching for btCS* " << cs << endl;
     579        orxout() << this->getName() << ": Searching for btCS* " << cs << endl;
    631580        // e.g. "Box 4 is WorldEntityCollisionShape 0x126dd060"
    632         orxout() << "  " << this->getRadarName() << " is WorldEntityCollisionShape* " << ownWECS << endl;
     581        orxout() << "  " << this->getName() << " is WorldEntityCollisionShape* " << ownWECS << endl;
    633582        // e.g. "Box 4 is WorldEntity 0x126dd060"
    634         orxout() << "  " << this->getRadarName() << " is WorldEntity* " << this << endl;
     583        orxout() << "  " << this->getName() << " is WorldEntity* " << this << endl;
    635584        // e.g. "Box 4 is objectID 943"
    636         orxout() << "  " << this->getRadarName() << " is objectID " << this->getObjectID() << endl;
     585        orxout() << "  " << this->getName() << " is objectID " << this->getObjectID() << endl;
    637586
    638587        // List all attached Objects
    639         orxout() << "  " << this->getRadarName() << " has the following Objects attached:" << endl;
     588        orxout() << "  " << this->getName() << " has the following Objects attached:" << endl;
    640589        for (int i=0; i<10; i++)
    641590        {
    642591            if (this->getAttachedObject(i)==NULL)
    643592                break;
    644             orxout() << " " << i << ": " << this->getAttachedObject(i);
     593            orxout() << " " << i << ": " << this->getAttachedObject(i) << " (" << this->getAttachedObject(i)->getName() << ")";
    645594            if(!orxonox_cast<Model*>(this->getAttachedObject(i)))
    646595                orxout() << " (SE)";
     
    648597        }
    649598
    650         if (this->health_ < 800)
    651             this->detach(this->getAttachedObject(2));
    652599
    653600        // print child shapes of this WECS
     
    656603        int temp = entityOfCollisionShape(cs);
    657604        if (temp==0)
    658             orxout() << this->getRadarName() << " has been hit on it's main body." << endl;
    659         else
    660             orxout() << this->getRadarName() << " has been hit on the attached entity no. " << temp << endl;
     605            orxout() << this->getName() << " has been hit on it's main body." << endl;
     606        else
     607            orxout() << this->getName() << " has been hit on the attached entity no. " << temp << endl;
    661608
    662609        // end
     
    680627
    681628                // pointer to the btCollisionShape
    682                 printSpaces(indent+2);  orxout() << "m_userPointer*: " << cs->getChildShape(i)->getUserPointer() << endl;
     629                printSpaces(indent+2);  orxout() << "m_userPointer*: " << cs->getChildShape(i)->getUserPointer() << " (name_: " << ((BaseObject*)(cs->getChildShape(i)->getUserPointer()))->getName() << ")" << endl;
    683630            }
    684631
  • code/branches/modularships/src/orxonox/worldentities/pawns/Pawn.h

    r10007 r10011  
    126126            //virtual void hit(Pawn* originator, const Vector3& force, float damage);
    127127            //virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, float damage);
    128             virtual void hit(Pawn* originator, const Vector3& force, float damage, float healthdamage = 0.0f, float shielddamage = 0.0f);
    129             virtual void customHit(Pawn* originator, const Vector3& force, const btCollisionShape* cs, float damage, float healthdamage = 0.0f, float shielddamage = 0.0f);
    130             virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, float damage, float healthdamage = 0.0f, float shielddamage = 0.0f);
    131             virtual void customHit(Pawn* originator, btManifoldPoint& contactpoint, const btCollisionShape* cs, float damage, float healthdamage = 0.0f, float shielddamage = 0.0f);
     128            virtual void hit(Pawn* originator, const Vector3& force, const btCollisionShape* cs, float damage, float healthdamage = 0.0f, float shielddamage = 0.0f);
     129            virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, const btCollisionShape* cs, float damage, float healthdamage = 0.0f, float shielddamage = 0.0f);
    132130
    133131            virtual void kill();
     
    198196
    199197            //virtual void damage(float damage, Pawn* originator = 0);
    200             virtual void damage(float damage, float healthdamage = 0.0f, float shielddamage = 0.0f, Pawn* originator = NULL);
    201             virtual void customDamage(float damage, float healthdamage = 0.0f, float shielddamage = 0.0f, Pawn* originator = NULL, const btCollisionShape* cs = NULL);
     198            virtual void damage(float damage, float healthdamage = 0.0f, float shielddamage = 0.0f, Pawn* originator = NULL, const btCollisionShape* cs = NULL);
    202199
    203200            bool bAlive_;
Note: See TracChangeset for help on using the changeset viewer.