- Timestamp:
- May 30, 2010, 3:19:49 PM (14 years ago)
- Location:
- code/branches/presentation3/src/modules/weapons/projectiles
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentation3/src/modules/weapons/projectiles/Rocket.cc
r6964 r7018 87 87 this->defSndWpnEngine_->setLooping(true); 88 88 this->defSndWpnEngine_->setSource("sounds/Rocket_engine.ogg"); 89 this->defSndWpnEngine_->setVolume(100); 89 90 this->attach(defSndWpnEngine_); 90 91 … … 92 93 this->defSndWpnLaunch_->setLooping(false); 93 94 this->defSndWpnLaunch_->setSource("sounds/Rocket_launch.ogg"); 95 this->defSndWpnLaunch_->setVolume(100); 94 96 this->attach(defSndWpnLaunch_); 95 97 } -
code/branches/presentation3/src/modules/weapons/projectiles/SimpleRocket.cc
r6951 r7018 58 58 this->localAngularVelocity_ = 0; 59 59 this->bDestroy_ = false; 60 this->lifetime_ = 100; 60 this->lifetime_ = 120; 61 this->setMass(15); 61 62 COUT(4) << "simplerocket constructed\n"; 62 63 this->maxLife_=90; 63 64 64 65 if (GameMode::isMaster()) 65 66 { 66 this->setCollisionType(WorldEntity::Kinematic);67 this-> setVelocity(0,0,100);67 this->setCollisionType(WorldEntity::Kinematic); 68 this->fuel_=true; 68 69 69 70 Model* model = new Model(this); … … 72 73 this->attach(model); 73 74 74 ParticleEmitter* fire= new ParticleEmitter(this);75 this->attach( fire);76 fire->setOrientation(this->getOrientation());77 fire->setSource("Orxonox/rocketfire2");78 75 this->fire_ = new ParticleEmitter(this); 76 this->attach(this->fire_); 77 78 this->fire_->setOrientation(this->getOrientation()); 79 this->fire_->setSource("Orxonox/simplerocketfire"); 79 80 this->enableCollisionCallback(); 80 81 this->setCollisionResponse(false); … … 83 84 // TODO: fix the orientation and size of this collision shape to match the rocket 84 85 ConeCollisionShape* collisionShape = new ConeCollisionShape(this); 85 collisionShape->setRadius(3); 86 collisionShape->setOrientation(this->getOrientation()); 87 collisionShape->setRadius(1.5f); 86 88 collisionShape->setHeight(5); 87 89 this->attachCollisionShape(collisionShape); 88 89 90 this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&SimpleRocket::destroyObject, this))); 90 91 } 91 92 92 93 } 93 94 95 96 97 94 98 void SimpleRocket::tick(float dt) 95 99 { 100 96 101 SUPER(SimpleRocket, tick, dt); 102 if (this->getVelocity().squaredLength() >130000) this->maxLife_-=dt; //if Velocity bigger than about 360, uses a lot more "fuel" :) 103 97 104 98 105 this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_); … … 100 107 this->localAngularVelocity_ = 0; 101 108 109 110 if (this->fuel_) { 111 if (this->destroyTimer_.getRemainingTime()< this->lifetime_-this->maxLife_ ) 112 this->fuel_=false; 113 } else this->disableFire(); 114 102 115 if( this->bDestroy_ ) 103 116 this->destroy(); 104 117 118 } 119 120 void SimpleRocket::disableFire(){ 121 this->setAcceleration(0,0,0); 122 this->fire_->detachFromParent(); 123 105 124 } 106 125 … … 134 153 this->player_ = this->owner_->getPlayer(); 135 154 } 155 136 156 137 157 … … 185 205 } 186 206 187 void SimpleRocket::setDestroy()188 {189 this->bDestroy_=true;190 CCOUT(4)<<"trying to destroy";191 }192 207 193 208 void SimpleRocket::fired(unsigned int firemode) -
code/branches/presentation3/src/modules/weapons/projectiles/SimpleRocket.h
r6951 r7018 34 34 #include "tools/Timer.h" 35 35 #include "worldentities/ControllableEntity.h" 36 #include "graphics/ParticleSpawner.h" 36 37 37 38 namespace orxonox … … 56 57 virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint); 57 58 void destroyObject(); 59 60 void disableFire(); 58 61 59 62 virtual void moveFrontBack(const Vector2& value){} … … 96 99 */ 97 100 inline void rotatePitch(float value) 98 { COUT(0)<<"rotated rocket yaw";101 { 99 102 this->rotatePitch(Vector2(value, 0)); } 100 103 /** … … 104 107 inline void rotateRoll(float value) 105 108 { 106 COUT(0)<<"rotated rocket roll";107 109 this->rotateRoll(Vector2(value, 0)); } 108 110 … … 110 112 inline Pawn* getOwner() const 111 113 { return this->owner_; } 114 inline bool hasFuel() 115 { return this->fuel_;} 116 117 inline void fuelRefill() 118 {this->fuel_=true;} 112 119 113 120 inline void setDamage(float damage) … … 123 130 float damage_; 124 131 bool bDestroy_; 132 bool fuel_; 125 133 126 134 … … 128 136 Timer destroyTimer_; 129 137 float lifetime_; 138 float maxLife_; 139 140 ParticleEmitter* fire_; 141 142 143 130 144 131 145 };
Note: See TracChangeset
for help on using the changeset viewer.