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/RocketController.cc

    r6956 r6966  
    11/*
    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  */
     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*/
    2828
    2929#include "RocketController.h"
     
    3939    /**
    4040    @brief
    41         Constructor.
     41    Constructor.
    4242    */
    4343    RocketController::RocketController(BaseObject* creator) : Controller(creator)
     
    4646        COUT(5)<< "RocketController constructed\n";
    4747
    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;
    5353    }
    5454
     
    5656    /**
    5757    @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.
    5959    @param dt
    60         The duration of the tick.
     60    The duration of the tick.
    6161    */
    6262    void RocketController::tick(float dt)
    6363    {
    64         haha++;
     64        counter_++;
    6565
    66         //if (haha<30)this->rocket->setVelocity(rocket->getVelocity()*1.03);
    67         if (this->target_) {
     66        if (this->target_ && this->rocket_->hasFuel()) {
    6867            this->setTargetPosition();
    6968            this->moveToTargetPosition();
    7069        }
    71         if (haha>500) rocket->setDestroy();;
    72 
     70       
     71       
    7372    }
    7473
     
    9493    {
    9594        this->target_ = target;
    96         CCOUT(4) << "got target" << endl;
    9795    }
    9896
     
    10199        if (!this->getControllableEntity())
    102100            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     
    114102        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       
    120110        this->getControllableEntity()->rotateYaw(-sgn(coord.x)*coord.x*coord.x);
    121111        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 slower
    132             //this->getControllableEntity()->rotateYaw(coord.x );
    133    //         this->getControllableEntity()->rotatePitch(coord.y);
    134    //     }
    135112    }
    136113
Note: See TracChangeset for help on using the changeset viewer.