Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 26, 2010, 4:28:14 PM (14 years ago)
Author:
gnadler
Message:

now rocket slows and then finally stops after a given number of ticks (aka fuel).
rocket speeds up if distance is greater than x (right now 1000 but can be changed).
collisionShape not yet fixed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/rocket2/src/modules/weapons/projectiles/SimpleRocket.cc

    r6956 r6966  
    5959        this->bDestroy_ = false;
    6060        this->lifetime_ = 100;
     61        this->setMass(15);
    6162        COUT(4) << "simplerocket constructed\n";
    62 
     63        this->counter_=0;
     64        this->slowing_=false;
    6365
    6466        if (GameMode::isMaster())
    6567       {
    6668            this->setCollisionType(WorldEntity::Kinematic);
    67             //this->setVelocity(0,0,100);
     69            this->fuel_=true;
    6870
    6971            Model* model = new Model(this);
     
    7274            this->attach(model);
    7375
    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");
    7981            this->enableCollisionCallback();
    8082            this->setCollisionResponse(false);
     
    8385            // TODO: fix the orientation and size of this collision shape to match the rocket
    8486            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);
    8790            this->attachCollisionShape(collisionShape);
     91           
    8892
    8993            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&SimpleRocket::destroyObject, this)));
     
    9195
    9296    }
    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
    94108    void SimpleRocket::tick(float dt)
    95109    {
     110
    96111        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" :)
    97114
    98115            this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_);
     
    100117            this->localAngularVelocity_ = 0;
    101118
     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            }
    102132            if( this->bDestroy_ )
    103133                this->destroy();
     134            if (!this->fuel_)
     135                this->disableFire();
     136       
     137           
     138           
    104139       
    105140    }
     
    134169        this->player_ = this->owner_->getPlayer();
    135170    }
     171
    136172
    137173
Note: See TracChangeset for help on using the changeset viewer.