Changeset 7018
- Timestamp:
- May 30, 2010, 3:19:49 PM (15 years ago)
- Location:
- code/branches/presentation3
- Files:
-
- 9 edited
- 1 copied
-
data/levels/tutorial.oxw (modified) (1 diff)
-
data/particle/simplerocketfire.particle (copied) (copied from code/branches/rocket2/data/particle/simplerocketfire.particle)
-
src/modules/weapons/RocketController.cc (modified) (6 diffs)
-
src/modules/weapons/RocketController.h (modified) (3 diffs)
-
src/modules/weapons/projectiles/Rocket.cc (modified) (2 diffs)
-
src/modules/weapons/projectiles/SimpleRocket.cc (modified) (6 diffs)
-
src/modules/weapons/projectiles/SimpleRocket.h (modified) (7 diffs)
-
src/modules/weapons/weaponmodes/SimpleRocketFire.cc (modified) (2 diffs)
-
src/modules/weapons/weaponmodes/SimpleRocketFire.h (modified) (1 diff)
-
src/orxonox/controllers/AIController.cc (modified) (1 prop)
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentation3/data/levels/tutorial.oxw
r7007 r7018 14 14 > 15 15 16 <Drone name="meineDrohne" primarythrust="80" auxilarythrust="10" rotationthrust="10" mass= "50" linearDamping = "0.9" angularDamping = "0.7"> 17 <attached> 18 <Model scale="1" mesh="drone.mesh"/> 19 </attached> 20 <collisionShapes> 21 <BoxCollisionShape position="0,0,0" halfExtents="10, 10, 10" /> 22 </collisionShapes> 23 </Drone> 16 17 18 19 <Drone name="meineDrohne" primarythrust="80" auxilarythrust="10" rotationthrust="10" mass= "50" linearDamping = "0.9" angularDamping = "0.7"> 20 <attached> 21 <Model scale="1" mesh="drone.mesh"/> 22 </attached> 23 <collisionShapes> 24 <BoxCollisionShape position="0,0,0" halfExtents="10, 10, 10" /> 25 </collisionShapes> 26 </Drone> 24 27 25 28 <Drone name="meineDrohne" primarythrust="80" auxilarythrust="10" rotationthrust="10" mass= "50" linearDamping = "0.9" angularDamping = "0.7"> -
code/branches/presentation3/src/modules/weapons/RocketController.cc
r7013 r7018 1 1 /* 2 * ORXONOX - the hottest 3D action shooter ever to exist3 * > www.orxonox.net <4 *5 *6 * License notice:7 *8 * This program is free software; you can redistribute it and/or9 * modify it under the terms of the GNU General Public License10 * as published by the Free Software Foundation; either version 211 * of the License, or (at your option) any later version.12 *13 * This program is distributed in the hope that it will be useful,14 * but WITHOUT ANY WARRANTY; without even the implied warranty of15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the16 * GNU General Public License for more details.17 *18 * You should have received a copy of the GNU General Public License19 * along with this program; if not, write to the Free Software20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.21 *22 * Author:23 * Gabriel Nadler, Originalfile: Oli Scheuss24 * Co-authors:25 * ...26 *27 */2 * ORXONOX - the hottest 3D action shooter ever to exist 3 * > www.orxonox.net < 4 * 5 * 6 * License notice: 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License 10 * as published by the Free Software Foundation; either version 2 11 * of the License, or (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21 * 22 * Author: 23 * Gabriel Nadler, Originalfile: Oli Scheuss 24 * Co-authors: 25 * ... 26 * 27 */ 28 28 29 29 #include "RocketController.h" … … 39 39 /** 40 40 @brief 41 Constructor.41 Constructor. 42 42 */ 43 43 RocketController::RocketController(BaseObject* creator) : Controller(creator) … … 46 46 COUT(5)<< "RocketController constructed\n"; 47 47 48 49 this->rocket = new SimpleRocket(this);50 this->rocket ->setController(this);51 this->setControllableEntity(dynamic_cast<ControllableEntity*> ( rocket));52 this-> haha=0;48 49 this->rocket_ = new SimpleRocket(this); 50 this->rocket_->setController(this); 51 this->setControllableEntity(dynamic_cast<ControllableEntity*> (this->rocket_)); 52 this->counter_=0; 53 53 } 54 54 … … 56 56 /** 57 57 @brief 58 The controlling happens here. This method defines what the controller has to do each tick.58 The controlling happens here. This method defines what the controller has to do each tick. 59 59 @param dt 60 The duration of the tick.60 The duration of the tick. 61 61 */ 62 62 void RocketController::tick(float dt) 63 63 { 64 haha++;64 counter_++; 65 65 66 //if (haha<30)this->rocket->setVelocity(rocket->getVelocity()*1.03); 67 if (this->target_) { 66 if (this->target_ && this->rocket_->hasFuel()) { 68 67 this->setTargetPosition(); 69 68 this->moveToTargetPosition(); 70 69 } 71 if (haha>500) rocket->setDestroy();;72 70 71 73 72 } 74 73 … … 81 80 void RocketController::setTargetPosition() 82 81 { 83 //this->targetPosition_=this->target_->getWorldPosition();84 this->targetPosition_ = getPredictedPosition(this->getControllableEntity()->getWorldPosition(),this->getControllableEntity()->getVelocity().length() , this->target_->getWorldPosition(), this->target_->getVelocity());82 this->targetPosition_=this->target_->getWorldPosition(); //don't really note a difference in the rocket behaviour xD 83 //this->targetPosition_ = getPredictedPosition(this->getControllableEntity()->getWorldPosition(),this->getControllableEntity()->getVelocity().length() , this->target_->getWorldPosition(), this->target_->getVelocity()); 85 84 } 86 85 void RocketController::moveToTargetPosition() … … 100 99 if (!this->getControllableEntity()) 101 100 return; 102 //float dx = target.x-this->getControllableEntity()->getPosition().x;103 //float dy = target.y-this->getControllableEntity()->getPosition().y;104 COUT(4)<<"\n diff: ";105 COUT(4)<<target-this->getControllableEntity()->getPosition() << endl;106 //COUT(0)<<"\n 2D view: ";107 /* COUT(0)<<this->getControllableEntity()->getPosition().x;108 COUT(0)<<" ";109 COUT(0)<<this->getControllableEntity()->getPosition().y;110 COUT(0)<<" ";111 COUT(0)<<this->getControllableEntity()->getPosition().z;112 COUT(0)<<"\n";*/113 101 Vector2 coord = get2DViewdirection(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target); 114 //float distance = (target - this->getControllableEntity()->getPosition()).length(); 115 //Vector3D diff =target-this->rocket->getPosition(); 116 COUT(4) << "viewdirection: "<< coord << endl; 117 //COUT(0)<<" "; 118 //COUT(0)<<coord.y; 119 this->getControllableEntity()->rotateYaw(-0.8f*sgn(coord.x)*coord.x*coord.x); 120 this->getControllableEntity()->rotatePitch(0.8f*sgn(coord.y)*coord.y*coord.y); 121 // this->getControllableEntity()->rotateYaw(10); 122 // this->getControllableEntity()->rotatePitch(0); 123 //this->getControllableEntity()->rotatePitch(rotation.getPitch().valueRadians()); 124 //this->getControllableEntity()->rotateYaw(rotation.getYaw().valueRadians()); 125 //this->getControllableEntity()->moveUpDown(coord.y); 126 //this->getControllableEntity()->moveRightLeft(coord.x); 127 //this->getControllableEntity()->rotatePitch(coord); 128 // if (this->target_ || distance > 10) 129 // { 130 // // Multiply with 0.8 to make them a bit slower 131 //this->getControllableEntity()->rotateYaw(coord.x ); 132 // this->getControllableEntity()->rotatePitch(coord.y); 133 // } 102 float distance = (target - this->getControllableEntity()->getWorldPosition()).length(); 103 104 105 if (distance > 1000&&this->getControllableEntity()->getVelocity().squaredLength()<160000) 106 this->getControllableEntity()->setAcceleration(this->rocket_->getOrientation()*Vector3(-20,-20,-20)); 107 if (distance <1000) this->rocket_->setAcceleration(0,0,0); 108 109 this->getControllableEntity()->rotateYaw(-sgn(coord.x)*coord.x*coord.x); 110 this->getControllableEntity()->rotatePitch(sgn(coord.y)*coord.y*coord.y); 134 111 } 135 112 -
code/branches/presentation3/src/modules/weapons/RocketController.h
r6951 r7018 41 41 /** 42 42 @brief 43 Controller for the Drone of the PPS tutorial.43 Controller for the Rocket (targetseeking) 44 44 @author 45 45 Gabriel Nadler, Originalfile: Oli Scheuss … … 52 52 53 53 virtual void tick(float dt); 54 SimpleRocket* getRocket(){return this->rocket ;};54 SimpleRocket* getRocket(){return this->rocket_;}; 55 55 void setTarget(WorldEntity* target); 56 56 protected: … … 60 60 61 61 private: 62 SimpleRocket* rocket ;62 SimpleRocket* rocket_; 63 63 Vector3 targetPosition_; 64 64 WeakPtr<PlayerInfo> player_; 65 int haha;65 66 66 WeakPtr<WorldEntity> target_; 67 int counter_; 67 68 68 69 -
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 }; -
code/branches/presentation3/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
r6951 r7018 46 46 RegisterObject(SimpleRocketFire); 47 47 48 this->reloadTime_ = 0.20f;48 this->reloadTime_ = 4; 49 49 this->bParallelReload_ = false; 50 50 this->damage_ = 100; 51 this->speed_ = 100;51 this->speed_ = 300; 52 52 53 53 this->setMunitionName("LaserMunition"); … … 64 64 SimpleRocket* rocket = con->getRocket(); 65 65 this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition()); 66 // rocket->setOrientation(this->getMuzzleOrientation());67 66 rocket->setOrientation(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getWorldOrientation()); 68 Vector3 pos = this->getMuzzlePosition(); 69 rocket->setPosition(pos); 70 // rocket->setAcceleration(20*rocket->getOrientation() * WorldEntity::FRONT); 67 rocket->setPosition(this->getMuzzlePosition()); 71 68 rocket->setVelocity(this->getMuzzleDirection()*this->speed_); 72 69 rocket->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()); 73 70 rocket->setDamage(this->damage_); 74 71 WorldEntity* pawnn=static_cast<ControllableEntity*>(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn())->getTarget(); 75 if (pawnn) 76 { 77 con->setTarget(pawnn); 78 } 72 if (pawnn) con->setTarget(pawnn); 79 73 } 80 74 } -
code/branches/presentation3/src/modules/weapons/weaponmodes/SimpleRocketFire.h
r6951 r7018 40 40 SimpleRocketFire(BaseObject* creator); 41 41 virtual ~SimpleRocketFire(); 42 42 void deactivateFire(); 43 43 virtual void fire(); 44 44 45 45 private: 46 46 float speed_; 47 47 48 }; 48 49 } -
code/branches/presentation3/src/orxonox/controllers/AIController.cc
- Property svn:mergeinfo changed (with no actual effect on merging)
Note: See TracChangeset
for help on using the changeset viewer.










