Changeset 10011 for code/branches/modularships/src
- Timestamp:
- Apr 2, 2014, 8:38:07 PM (11 years ago)
- Location:
- code/branches/modularships/src
- Files:
-
- 2 added
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/modularships/src/modules/weapons/projectiles/BasicProjectile.cc
r9995 r10011 78 78 @see Pawn.h 79 79 */ 80 bool BasicProjectile::processCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint )80 bool BasicProjectile::processCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint, const btCollisionShape* cs) 81 81 { 82 82 if (!this->bDestroy_ && GameMode::isMaster()) … … 96 96 if (victim) 97 97 { 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()); 99 99 victim->startReloadCountdown(); 100 100 } … … 141 141 } 142 142 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 yourself148 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 NULL154 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 block159 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 not166 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 health170 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 condition181 {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 instead192 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 }205 143 206 144 /** -
code/branches/modularships/src/modules/weapons/projectiles/BasicProjectile.h
r9995 r10011 119 119 120 120 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); 123 122 void destroyCheck(void); 124 123 -
code/branches/modularships/src/modules/weapons/projectiles/Projectile.cc
r9995 r10011 88 88 } 89 89 90 bool Projectile::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)90 bool Projectile::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint) 91 91 { 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); 98 93 } 99 94 -
code/branches/modularships/src/modules/weapons/projectiles/Projectile.h
r9995 r10011 64 64 65 65 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); 68 67 69 68 private: -
code/branches/modularships/src/modules/weapons/projectiles/Rocket.cc
r9995 r10011 191 191 } 192 192 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); 201 196 } 202 197 -
code/branches/modularships/src/modules/weapons/projectiles/Rocket.h
r9995 r10011 64 64 virtual void tick(float dt); //!< Defines which actions the Rocket has to take in each tick. 65 65 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); 68 67 virtual void destroyObject(void); 69 68 void destructionEffect(); -
code/branches/modularships/src/modules/weapons/projectiles/SimpleRocket.cc
r9995 r10011 172 172 } 173 173 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); 182 177 } 183 178 -
code/branches/modularships/src/modules/weapons/projectiles/SimpleRocket.h
r9995 r10011 64 64 virtual void tick(float dt); 65 65 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); 68 67 69 68 void disableFire(); //!< Method to disable the fire and stop all acceleration -
code/branches/modularships/src/orxonox/CMakeLists.txt
r9348 r10011 32 32 PlayerManager.cc 33 33 Radar.cc 34 ShipPart.cc 34 35 # Test.cc 35 36 -
code/branches/modularships/src/orxonox/Scene.cc
r9996 r10011 201 201 // Note: This is a global variable which we assign a static function. 202 202 // TODO: Check whether this (or anything about Bullet) works with multiple physics engine instances. 203 gContactAddedCallback = &Scene::c ustomCollisionCallback;203 gContactAddedCallback = &Scene::collisionCallback; 204 204 } 205 205 else if (!wantPhysics && hasPhysics()) … … 349 349 SmartPtr<WorldEntity> object1 = static_cast<WorldEntity*>(colObj1->getUserPointer()); 350 350 351 // get the CollisionShape pointers 352 const btCollisionShape* cs0 = colObj0->getCollisionShape(); 353 const btCollisionShape* cs1 = colObj1->getCollisionShape(); 354 351 355 // false means that bullet will assume we didn't modify the contact 352 356 bool modified = false; 353 357 if (object0->isCollisionCallbackActive()) 354 modified |= object0->collidesAgainst(object1, c p);358 modified |= object0->collidesAgainst(object1, cs1, cp); 355 359 if (object1->isCollisionCallbackActive()) 356 modified |= object1->collidesAgainst(object0, c p);360 modified |= object1->collidesAgainst(object0, cs0, cp); 357 361 358 362 return modified; 359 363 } 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 pointers365 SmartPtr<WorldEntity> object0 = static_cast<WorldEntity*>(colObj0->getUserPointer());366 SmartPtr<WorldEntity> object1 = static_cast<WorldEntity*>(colObj1->getUserPointer());367 368 // get the CollisionShape pointers369 const btCollisionShape* cs0 = colObj0->getCollisionShape();370 const btCollisionShape* cs1 = colObj1->getCollisionShape();371 372 // false means that bullet will assume we didn't modify the contact373 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 }381 364 } -
code/branches/modularships/src/orxonox/ShipPart.cc
r10007 r10011 35 35 #include "core/XMLPort.h" 36 36 #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" 37 41 38 42 … … 42 46 43 47 ShipPart::ShipPart(Context* context) 48 : Item(context) 44 49 { 45 //RegisterObject(ShipPart);50 RegisterObject(ShipPart); 46 51 } 47 52 … … 51 56 } 52 57 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 53 149 } -
code/branches/modularships/src/orxonox/ShipPart.h
r10007 r10011 31 31 32 32 #include "OrxonoxPrereqs.h" 33 #include "items/Item.h" 33 34 34 35 #include <string> … … 38 39 { // tolua_export 39 40 class _OrxonoxExport ShipPart // tolua_export 41 : public Item 40 42 { // tolua_export 41 43 … … 44 46 virtual ~ShipPart(); 45 47 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 46 73 protected: 74 Pawn* parent_; 75 unsigned int parentID_; // Object ID of the SpaceShip the Part is mounted on. 47 76 77 float damageAbsorption_; 78 float health_; 48 79 49 80 private: 50 81 std::vector<StaticEntity*> entityList_; // list of all entities which belong to this part 51 82 52 83 }; // tolua_export -
code/branches/modularships/src/orxonox/worldentities/MovableEntity.cc
r9995 r10011 72 72 } 73 73 74 bool MovableEntity::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)74 bool MovableEntity::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) 75 75 { 76 76 if (GameMode::isMaster() && enableCollisionDamage_) … … 80 80 { 81 81 float damage = this->collisionDamage_ * (victim->getVelocity() - this->getVelocity()).length(); 82 victim->hit(0, contactPoint, damage);82 victim->hit(0, contactPoint, ownCollisionShape, damage); 83 83 } 84 84 } … … 86 86 return false; 87 87 } 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 104 88 105 89 void MovableEntity::registerVariables() -
code/branches/modularships/src/orxonox/worldentities/MovableEntity.h
r9995 r10011 47 47 48 48 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); 51 50 52 51 using WorldEntity::setPosition; -
code/branches/modularships/src/orxonox/worldentities/WorldEntity.h
r9997 r10011 374 374 Condition is that enableCollisionCallback() was called. 375 375 */ 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) 380 377 { return false; } /* With false, Bullet assumes no modification to the collision objects. */ 381 378 -
code/branches/modularships/src/orxonox/worldentities/pawns/CMakeLists.txt
r7163 r10011 4 4 Pawn.cc 5 5 SpaceShip.cc 6 ModularSpaceShip.cc 6 7 TeamBaseMatchBase.cc 7 8 Destroyer.cc -
code/branches/modularships/src/orxonox/worldentities/pawns/Pawn.cc
r10007 r10011 250 250 } 251 251 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 254 259 // Applies multiplier given by the DamageBoost Pickup. 255 260 if (originator) … … 280 285 } 281 286 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 else301 {302 this->setShieldHealth(this->shieldHealth_ - shielddamage);303 304 // remove remaining shieldAbsorpton-Part of damage from shield305 shielddamage = damage * this->shieldAbsorption_;306 shielddamage = std::min(this->getShieldHealth(),shielddamage);307 this->setShieldHealth(this->shieldHealth_ - shielddamage);308 309 // set remaining damage to health310 this->setHealth(this->health_ - (damage - shielddamage) - healthdamage);311 }312 313 this->lastHitOriginator_ = originator;314 }315 }316 317 287 // TODO: Still valid? 318 288 /* HIT-Funktionen … … 320 290 321 291 */ 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) 323 293 { 324 294 if (this->getGametype() && this->getGametype()->allowPawnHit(this, originator) && (!this->getController() || !this->getController()->getGodMode()) ) 325 295 { 326 this->damage(damage, healthdamage, shielddamage, originator );296 this->damage(damage, healthdamage, shielddamage, originator, cs); 327 297 this->setVelocity(this->getVelocity() + force); 328 298 } 329 299 } 330 300 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) 332 302 { 333 303 if (this->getGametype() && this->getGametype()->allowPawnHit(this, originator) && (!this->getController() || !this->getController()->getGodMode()) ) 334 304 { 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); 356 306 357 307 if ( this->getController() ) … … 620 570 } 621 571 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 624 573 int Pawn::isMyCollisionShape(const btCollisionShape* cs) 625 574 { … … 628 577 629 578 // e.g. "Box 4: Searching for CS 0x1ad49200" 630 orxout() << this->get RadarName() << ": Searching for btCS* " << cs << endl;579 orxout() << this->getName() << ": Searching for btCS* " << cs << endl; 631 580 // e.g. "Box 4 is WorldEntityCollisionShape 0x126dd060" 632 orxout() << " " << this->get RadarName() << " is WorldEntityCollisionShape* " << ownWECS << endl;581 orxout() << " " << this->getName() << " is WorldEntityCollisionShape* " << ownWECS << endl; 633 582 // e.g. "Box 4 is WorldEntity 0x126dd060" 634 orxout() << " " << this->get RadarName() << " is WorldEntity* " << this << endl;583 orxout() << " " << this->getName() << " is WorldEntity* " << this << endl; 635 584 // e.g. "Box 4 is objectID 943" 636 orxout() << " " << this->get RadarName() << " is objectID " << this->getObjectID() << endl;585 orxout() << " " << this->getName() << " is objectID " << this->getObjectID() << endl; 637 586 638 587 // List all attached Objects 639 orxout() << " " << this->get RadarName() << " has the following Objects attached:" << endl;588 orxout() << " " << this->getName() << " has the following Objects attached:" << endl; 640 589 for (int i=0; i<10; i++) 641 590 { 642 591 if (this->getAttachedObject(i)==NULL) 643 592 break; 644 orxout() << " " << i << ": " << this->getAttachedObject(i) ;593 orxout() << " " << i << ": " << this->getAttachedObject(i) << " (" << this->getAttachedObject(i)->getName() << ")"; 645 594 if(!orxonox_cast<Model*>(this->getAttachedObject(i))) 646 595 orxout() << " (SE)"; … … 648 597 } 649 598 650 if (this->health_ < 800)651 this->detach(this->getAttachedObject(2));652 599 653 600 // print child shapes of this WECS … … 656 603 int temp = entityOfCollisionShape(cs); 657 604 if (temp==0) 658 orxout() << this->get RadarName() << " has been hit on it's main body." << endl;659 else 660 orxout() << this->get RadarName() << " 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; 661 608 662 609 // end … … 680 627 681 628 // 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; 683 630 } 684 631 -
code/branches/modularships/src/orxonox/worldentities/pawns/Pawn.h
r10007 r10011 126 126 //virtual void hit(Pawn* originator, const Vector3& force, float damage); 127 127 //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); 132 130 133 131 virtual void kill(); … … 198 196 199 197 //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); 202 199 203 200 bool bAlive_;
Note: See TracChangeset
for help on using the changeset viewer.