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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentation3/src/modules/weapons/RocketController.cc

    r7013 r7018  
    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
     
    8180    void RocketController::setTargetPosition()
    8281    {
    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());
    8584    }
    8685    void RocketController::moveToTargetPosition()
     
    10099        if (!this->getControllableEntity())
    101100            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";*/
    113101        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);
    134111    }
    135112
Note: See TracChangeset for help on using the changeset viewer.