Changeset 11108 for code/trunk/src/modules/weapons/projectiles
- Timestamp:
- Feb 4, 2016, 11:54:04 PM (9 years ago)
- Location:
- code/trunk/src/modules/weapons/projectiles
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc
r11099 r11108 54 54 this->bDestroy_ = false; 55 55 56 // Default is destroying the projectile after collision 57 this->destroyAfterCollision_ = true; 58 56 59 // Default damage must be zero, otherwise it would be above zero if no settings are made in the weaponsettings xml file. 57 60 // same thing for all weaponmodes files … … 87 90 return false; 88 91 89 this->bDestroy_ = true; // If something is hit, the object is destroyed and can't hit something else. 90 // The projectile is destroyed by its tick()-function (in the following tick). 92 if (getDestroyAfterCollision()) 93 { 94 this->bDestroy_ = true; // If something is hit, the object is destroyed and can't hit something else. 95 // The projectile is destroyed by its tick()-function (in the following tick). 96 // TODO: Use destroyLater() for this 97 } 91 98 92 99 Pawn* victim = orxonox_cast<Pawn*>(otherObject); // If otherObject isn't a Pawn, then victim is nullptr -
code/trunk/src/modules/weapons/projectiles/BasicProjectile.h
r11099 r11108 119 119 bool processCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint, const btCollisionShape* cs); 120 120 void destroyCheck(void); 121 inline void setDestroyAfterCollision(bool destroyAfterCollision) 122 { destroyAfterCollision_ = destroyAfterCollision; } 123 inline bool getDestroyAfterCollision() const 124 { return destroyAfterCollision_; } 121 125 122 126 private: … … 130 134 131 135 bool bDestroy_; //!< Boolean, to check whether a projectile should be destroyed. 136 bool destroyAfterCollision_; //!< Boolean, defines whether the projectile gets detroyed after a collision. 132 137 }; 133 138 } -
code/trunk/src/modules/weapons/projectiles/CMakeLists.txt
r11052 r11108 7 7 SplitGunProjectile.cc 8 8 IceGunProjectile.cc 9 FlameGunProjectile.cc 9 10 Rocket.cc 10 11 RocketOld.cc -
code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.cc
r11071 r11108 47 47 48 48 this->textureIndex_ = 1; 49 this->setMass( 2);49 this->setMass(0.1f); 50 50 this->setCollisionType(CollisionType::Dynamic); 51 51 this->maxTextureIndex_ = 8; -
code/trunk/src/modules/weapons/projectiles/ParticleProjectile.cc
r11071 r11108 43 43 RegisterClass(ParticleProjectile); 44 44 45 ParticleProjectile::ParticleProjectile(Context* context) : BillboardProjectile(context)45 ParticleProjectile::ParticleProjectile(Context* context) : Projectile(context) 46 46 { 47 47 RegisterObject(ParticleProjectile); 48 48 49 if (GameMode::showsGraphics()) 50 { 51 // Create the particles. 52 this->particles_ = new ParticleInterface(this->getScene()->getSceneManager(), "Orxonox/shot3_small", LODParticle::Normal); 53 this->attachOgreObject(this->particles_->getParticleSystem()); 54 this->particles_->setKeepParticlesInLocalSpace(0); 49 this->particles_ = nullptr; 55 50 56 for (unsigned int i = 0; i < this->particles_->getNumEmitters(); ++i) 57 this->particles_->getEmitter(i)->setDirection(-WorldEntity::FRONT); 58 } 59 else 60 this->particles_ = nullptr; 51 //setEffect("Orxonox/sparks2"); 61 52 } 62 53 … … 82 73 this->particles_->setEnabled(this->isVisible()); 83 74 } 75 76 void ParticleProjectile::setEffect(const std::string& effect) 77 { 78 // If we already have a particle interface, delete it 79 if (this->particles_) 80 { 81 this->detachOgreObject(this->particles_->getParticleSystem()); 82 delete this->particles_; 83 this->particles_ = nullptr; 84 } 85 86 if (GameMode::showsGraphics()) 87 { 88 // Create the particles. 89 this->particles_ = new ParticleInterface(this->getScene()->getSceneManager(), effect, LODParticle::Normal); 90 this->attachOgreObject(this->particles_->getParticleSystem()); 91 this->particles_->setKeepParticlesInLocalSpace(0); 92 93 for (unsigned int i = 0; i < this->particles_->getNumEmitters(); ++i) 94 this->particles_->getEmitter(i)->setDirection(-WorldEntity::FRONT); 95 } 96 else 97 { 98 this->particles_ = nullptr; 99 } 100 } 84 101 } -
code/trunk/src/modules/weapons/projectiles/ParticleProjectile.h
r11071 r11108 48 48 @ingroup WeaponsProjectiles 49 49 */ 50 class _WeaponsExport ParticleProjectile : public BillboardProjectile50 class _WeaponsExport ParticleProjectile : public Projectile 51 51 { 52 52 public: … … 54 54 virtual ~ParticleProjectile(); 55 55 virtual void changedVisibility() override; 56 virtual void setEffect(const std::string& effect); 56 57 57 58 private: -
code/trunk/src/modules/weapons/projectiles/Projectile.cc
r11071 r11108 54 54 if (GameMode::isMaster()) 55 55 { 56 this->setMass( 1.0f);56 this->setMass(0.1f); 57 57 this->enableCollisionCallback(); 58 58 this->setCollisionResponse(false); -
code/trunk/src/modules/weapons/projectiles/SplitGunProjectile.cc
r11099 r11108 52 52 this->spread_ = 0.2f; 53 53 this->damageReduction_ = 1.0f; 54 this->splitSound_ = nullptr; 55 56 this->setSplitSound("sounds/Weapon_SplitGun.ogg", 0.8); 57 } 58 59 SplitGunProjectile::~SplitGunProjectile() 60 { 61 if (this->isInitialized()) 62 { 63 if (splitSound_) 64 { 65 splitSound_->destroy(); 66 } 67 } 54 68 } 55 69 … … 158 172 159 173 numberOfSplits_ = 0; 174 175 if (splitSound_) 176 { 177 splitSound_->play(); 178 } 160 179 } 161 180 } 181 182 void SplitGunProjectile::setSplitSound(const std::string& soundPath, const float soundVolume) 183 { 184 if (!splitSound_) 185 { 186 this->splitSound_ = new WorldSound(this->getContext()); 187 this->splitSound_->setLooping(false); 188 this->attach(splitSound_); 189 } 190 191 this->splitSound_->setSource(soundPath); 192 this->splitSound_->setVolume(soundVolume); 193 } 162 194 } -
code/trunk/src/modules/weapons/projectiles/SplitGunProjectile.h
r11052 r11108 28 28 29 29 /** 30 @file IceGunProjectile.h30 @file SplitGunProjectile.h 31 31 @brief Definition of the SplitGunProjectile class. 32 32 */ … … 40 40 #include "tools/Timer.h" 41 41 #include "BillboardProjectile.h" 42 #include "sound/WorldSound.h" 42 43 43 44 namespace orxonox … … 55 56 public: 56 57 SplitGunProjectile(Context* context); 57 virtual ~SplitGunProjectile() {}58 virtual ~SplitGunProjectile(); 58 59 59 60 virtual void setNumberOfSplits(int numberOfSplits); … … 62 63 virtual void setSpread(float spread); 63 64 virtual void setDamageReduction(float damageReduction); 65 virtual void setSplitSound(const std::string& soundPath, const float soundVolume = 1.0); 64 66 65 67 private: … … 70 72 float damageReduction_; //The damage of a child projectile is reduced by this factor 71 73 Timer splitTimer_; 74 WorldSound* splitSound_; //Sound played if the projectile splits 72 75 73 76 virtual void split();
Note: See TracChangeset
for help on using the changeset viewer.