Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 30, 2010, 3:19:49 PM (14 years ago)
Author:
scheusso
Message:

merged rocket2 branch back into presentation3 branch

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  
    8787            this->defSndWpnEngine_->setLooping(true);
    8888            this->defSndWpnEngine_->setSource("sounds/Rocket_engine.ogg");
     89            this->defSndWpnEngine_->setVolume(100);
    8990            this->attach(defSndWpnEngine_);
    9091
     
    9293            this->defSndWpnLaunch_->setLooping(false);
    9394            this->defSndWpnLaunch_->setSource("sounds/Rocket_launch.ogg");
     95            this->defSndWpnLaunch_->setVolume(100);
    9496            this->attach(defSndWpnLaunch_);
    9597        }
  • code/branches/presentation3/src/modules/weapons/projectiles/SimpleRocket.cc

    r6951 r7018  
    5858        this->localAngularVelocity_ = 0;
    5959        this->bDestroy_ = false;
    60         this->lifetime_ = 100;
     60        this->lifetime_ = 120;
     61        this->setMass(15);
    6162        COUT(4) << "simplerocket constructed\n";
    62 
     63        this->maxLife_=90;
    6364
    6465        if (GameMode::isMaster())
    6566       {
    66            this->setCollisionType(WorldEntity::Kinematic);
    67             this->setVelocity(0,0,100);
     67            this->setCollisionType(WorldEntity::Kinematic);
     68            this->fuel_=true;
    6869
    6970            Model* model = new Model(this);
     
    7273            this->attach(model);
    7374
    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");
    7980            this->enableCollisionCallback();
    8081            this->setCollisionResponse(false);
     
    8384            // TODO: fix the orientation and size of this collision shape to match the rocket
    8485            ConeCollisionShape* collisionShape = new ConeCollisionShape(this);
    85             collisionShape->setRadius(3);
     86            collisionShape->setOrientation(this->getOrientation());
     87            collisionShape->setRadius(1.5f);
    8688            collisionShape->setHeight(5);
    8789            this->attachCollisionShape(collisionShape);
    88 
    8990            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&SimpleRocket::destroyObject, this)));
    9091        }
    9192
    9293    }
    93    
     94   
     95
     96
     97
    9498    void SimpleRocket::tick(float dt)
    9599    {
     100
    96101        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       
    97104
    98105            this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_);
     
    100107            this->localAngularVelocity_ = 0;
    101108
     109           
     110            if (this->fuel_) {
     111                if (this->destroyTimer_.getRemainingTime()<  this->lifetime_-this->maxLife_ )
     112                    this->fuel_=false;
     113            } else this->disableFire();
     114
    102115            if( this->bDestroy_ )
    103116                this->destroy();
    104        
     117               
     118    }
     119
     120    void SimpleRocket::disableFire(){
     121        this->setAcceleration(0,0,0);       
     122        this->fire_->detachFromParent();
     123
    105124    }
    106125
     
    134153        this->player_ = this->owner_->getPlayer();
    135154    }
     155
    136156
    137157
     
    185205    }
    186206   
    187     void SimpleRocket::setDestroy()
    188     {
    189         this->bDestroy_=true;
    190         CCOUT(4)<<"trying to destroy";
    191     }
    192207
    193208    void SimpleRocket::fired(unsigned int firemode)
  • code/branches/presentation3/src/modules/weapons/projectiles/SimpleRocket.h

    r6951 r7018  
    3434#include "tools/Timer.h"
    3535#include "worldentities/ControllableEntity.h"
     36#include "graphics/ParticleSpawner.h"
    3637
    3738namespace orxonox
     
    5657            virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
    5758            void destroyObject();
     59
     60            void disableFire();
    5861
    5962            virtual void moveFrontBack(const Vector2& value){}
     
    9699            */
    97100            inline void rotatePitch(float value)
    98             {   COUT(0)<<"rotated rocket yaw";
     101            {   
    99102                                this->rotatePitch(Vector2(value, 0)); }
    100103            /**
     
    104107            inline void rotateRoll(float value)
    105108            {
    106                                 COUT(0)<<"rotated rocket roll";
    107109                                this->rotateRoll(Vector2(value, 0)); }
    108110
     
    110112            inline Pawn* getOwner() const
    111113                { return this->owner_; }
     114            inline bool hasFuel()
     115            { return this->fuel_;}
     116
     117            inline void fuelRefill()
     118            {this->fuel_=true;}
    112119
    113120            inline void setDamage(float damage)
     
    123130            float damage_;
    124131            bool bDestroy_;
     132            bool fuel_;
    125133
    126134
     
    128136            Timer destroyTimer_;
    129137            float lifetime_;
     138            float maxLife_;
     139
     140            ParticleEmitter* fire_;
     141
     142
     143
    130144
    131145    };
Note: See TracChangeset for help on using the changeset viewer.