- Timestamp:
- May 26, 2010, 4:28:14 PM (16 years ago)
- Location:
- code/branches/rocket2
- Files:
-
- 1 added
- 9 edited
-
data/levels/tutorial.oxw (modified) (1 diff)
-
data/particle/simplerocketfire.particle (added)
-
src/modules/weapons/RocketController.cc (modified) (6 diffs)
-
src/modules/weapons/RocketController.h (modified) (3 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/DroneController.cc (modified) (1 diff)
-
src/orxonox/graphics/Model.cc (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
code/branches/rocket2/data/levels/tutorial.oxw
r6951 r6966 14 14 > 15 15 16 17 18 16 19 <Drone name="meineDrohne" primarythrust="80" auxilarythrust="10" rotationthrust="10" mass= "50" linearDamping = "0.9" angularDamping = "0.7"> 17 20 <attached> -
code/branches/rocket2/src/modules/weapons/RocketController.cc
r6956 r6966 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 … … 94 93 { 95 94 this->target_ = target; 96 CCOUT(4) << "got target" << endl;97 95 } 98 96 … … 101 99 if (!this->getControllableEntity()) 102 100 return; 103 float dx = target.x-this->getControllableEntity()->getPosition().x; 104 float dy = target.y-this->getControllableEntity()->getPosition().y; 105 COUT(4)<<"\n diff: "; 106 COUT(4)<<target-this->getControllableEntity()->getPosition() << endl; 107 //COUT(0)<<"\n 2D view: "; 108 /* COUT(0)<<this->getControllableEntity()->getPosition().x; 109 COUT(0)<<" "; 110 COUT(0)<<this->getControllableEntity()->getPosition().y; 111 COUT(0)<<" "; 112 COUT(0)<<this->getControllableEntity()->getPosition().z; 113 COUT(0)<<"\n";*/ 101 114 102 Vector2 coord = get2DViewdirection(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target); 115 float distance = (target - this->getControllableEntity()->getPosition()).length(); 116 //Vector3D diff =target-this->rocket->getPosition(); 117 COUT(4) << "viewdirection: "<< coord << endl; 118 //COUT(0)<<" "; 119 //COUT(0)<<coord.y; 103 float distance = (target - this->getControllableEntity()->getWorldPosition()).length(); 104 105 106 if (distance > 1000&&this->getControllableEntity()->getVelocity().squaredLength()<160000) 107 this->getControllableEntity()->setAcceleration(this->rocket_->getOrientation()*Vector3(-20,-20,-20)); 108 if (distance <1000) this->rocket_->setAcceleration(0,0,0); 109 120 110 this->getControllableEntity()->rotateYaw(-sgn(coord.x)*coord.x*coord.x); 121 111 this->getControllableEntity()->rotatePitch(sgn(coord.y)*coord.y*coord.y); 122 // this->getControllableEntity()->rotateYaw(10);123 // this->getControllableEntity()->rotatePitch(0);124 //this->getControllableEntity()->rotatePitch(rotation.getPitch().valueRadians());125 //this->getControllableEntity()->rotateYaw(rotation.getYaw().valueRadians());126 //this->getControllableEntity()->moveUpDown(coord.y);127 //this->getControllableEntity()->moveRightLeft(coord.x);128 //this->getControllableEntity()->rotatePitch(coord);129 // if (this->target_ || distance > 10)130 // {131 // // Multiply with 0.8 to make them a bit slower132 //this->getControllableEntity()->rotateYaw(coord.x );133 // this->getControllableEntity()->rotatePitch(coord.y);134 // }135 112 } 136 113 -
code/branches/rocket2/src/modules/weapons/RocketController.h
r6951 r6966 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/rocket2/src/modules/weapons/projectiles/SimpleRocket.cc
r6956 r6966 59 59 this->bDestroy_ = false; 60 60 this->lifetime_ = 100; 61 this->setMass(15); 61 62 COUT(4) << "simplerocket constructed\n"; 62 63 this->counter_=0; 64 this->slowing_=false; 63 65 64 66 if (GameMode::isMaster()) 65 67 { 66 68 this->setCollisionType(WorldEntity::Kinematic); 67 //this->setVelocity(0,0,100);69 this->fuel_=true; 68 70 69 71 Model* model = new Model(this); … … 72 74 this->attach(model); 73 75 74 ParticleEmitter* fire= new ParticleEmitter(this);75 this->attach( fire);76 fire->setOrientation(this->getOrientation());77 fire->setSource("Orxonox/rocketfire2");78 76 this->fire_ = new ParticleEmitter(this); 77 this->attach(this->fire_); 78 79 this->fire_->setOrientation(this->getOrientation()); 80 this->fire_->setSource("Orxonox/simplerocketfire"); 79 81 this->enableCollisionCallback(); 80 82 this->setCollisionResponse(false); … … 83 85 // TODO: fix the orientation and size of this collision shape to match the rocket 84 86 ConeCollisionShape* collisionShape = new ConeCollisionShape(this); 85 collisionShape->setRadius(3); 86 collisionShape->setHeight(5); 87 collisionShape->setOrientation(this->getOrientation()); 88 collisionShape->setRadius(1.5f); 89 collisionShape->setHeight(200); 87 90 this->attachCollisionShape(collisionShape); 91 88 92 89 93 this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&SimpleRocket::destroyObject, this))); … … 91 95 92 96 } 93 97 98 void SimpleRocket::disableFire(){ 99 this->setAcceleration(0,0,0); 100 this->setVelocity(Vector3(0,0,0)); 101 102 this->fire_->detachFromParent(); 103 //this->fire_->setVisible(false); 104 105 } 106 107 94 108 void SimpleRocket::tick(float dt) 95 109 { 110 96 111 SUPER(SimpleRocket, tick, dt); 112 counter_++; 113 if (this->getVelocity().squaredLength() >130000 && !slowing_) counter_++; //if Velocity bigger than about 360, uses a lot more "fuel" :) 97 114 98 115 this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_); … … 100 117 this->localAngularVelocity_ = 0; 101 118 119 120 if (this->fuel_) { 121 COUT(0)<<this->getVelocity().length()<<endl; 122 if (this->counter_>1000 && counter_%12==0) 123 124 if (!this->slowing_) { 125 this->setAcceleration(this->getOrientation()*Vector3(10,10,10)); 126 this->slowing_=true; 127 } 128 129 if (this->counter_ > 1800) 130 this->fuel_=false; 131 } 102 132 if( this->bDestroy_ ) 103 133 this->destroy(); 134 if (!this->fuel_) 135 this->disableFire(); 136 137 138 104 139 105 140 } … … 134 169 this->player_ = this->owner_->getPlayer(); 135 170 } 171 136 172 137 173 -
code/branches/rocket2/src/modules/weapons/projectiles/SimpleRocket.h
r6951 r6966 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_; 133 bool slowing_; 134 int counter_; 125 135 126 136 … … 128 138 Timer destroyTimer_; 129 139 float lifetime_; 140 ParticleEmitter* fire_; 141 130 142 131 143 }; -
code/branches/rocket2/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
r6956 r6966 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; … … 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/rocket2/src/modules/weapons/weaponmodes/SimpleRocketFire.h
r6951 r6966 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/rocket2/src/orxonox/controllers/DroneController.cc
r6951 r6966 72 72 // - rotatePitch, rotateYaw, rotateRoll 73 73 // - apply the to myDrone (e.g. myDrone->rotateYaw(..) ) 74 myDrone->rotatePitch(0.08);75 myDrone->moveFrontBack(1);74 //myDrone->rotatePitch(0.08); 75 //myDrone->moveFrontBack(1); 76 76 77 77 } -
code/branches/rocket2/src/orxonox/graphics/Model.cc
r6942 r6966 149 149 150 150 //Generiert LOD-Levels 151 this->mesh_.getEntity()->getMesh()->generateLodLevels(distList, Ogre::ProgressiveMesh::VRQ_PROPORTIONAL, reductionValue);151 //this->mesh_.getEntity()->getMesh()->generateLodLevels(distList, Ogre::ProgressiveMesh::VRQ_PROPORTIONAL, reductionValue); 152 152 } 153 153 else
Note: See TracChangeset
for help on using the changeset viewer.










