Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 15, 2010, 6:12:13 PM (15 years ago)
Author:
gnadler
Message:

rockets get target but moveToPosition function does not work correctly.

Location:
code/branches/rocket/src/modules/weapons
Files:
5 edited

Legend:

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

    r6904 r6905  
    6363    {
    6464                haha++;
     65               
    6566
    6667        SimpleRocket *rocket = static_cast<SimpleRocket*>(this->getControllableEntity());
     68                if (haha<30)rocket->setVelocity(rocket->getVelocity()*1.03);
    6769                if (this->target_) {
    68                 rocket->rotatePitch(0.5);
    69                 rocket->rotateYaw(0.5);
     70                        this->setTargetPosition();
     71                        this->moveToTargetPosition();
     72               
    7073                }
    71                 rocket->setVelocity(rocket->getVelocity()*1.03);
     74               
     75                if (haha>500) rocket->setDestroy();;
    7276       
    7377        }
     
    8084        }
    8185
     86        void RocketController::setTargetPosition() {
     87                this->targetPosition_=this->target_->getPosition();
     88                //this->targetPosition_ = getPredictedPosition(this->getControllableEntity()->getPosition(),this->getControllableEntity()->getVelocity().length() , this->target_->getPosition(), this->target_->getVelocity());
     89        }
     90        void RocketController::moveToTargetPosition() {
     91                this->moveToPosition(this->targetPosition_);
     92        }
    8293
    83         void RocketController::setTarget(Pawn* target) {
     94
     95
     96        void RocketController::setTarget(WorldEntity* target) {
    8497                this->target_ = target;
     98                COUT(0)<<"got target\n";
    8599        }
     100
     101        void RocketController::moveToPosition(const Vector3& target)
     102    {
     103       if (!this->getControllableEntity())
     104            return;
     105
     106           COUT(0)<<"moving";
     107
     108        Vector2 coord = get2DViewdirection(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target);
     109        float distance = (target - this->getControllableEntity()->getPosition()).length();
     110
     111        if (this->target_ || distance > 10)
     112        {
     113            // Multiply with 0.8 to make them a bit slower
     114                         this->getControllableEntity()->rotateYaw(-0.2f * sgn(coord.x) * coord.x*coord.x);
     115            this->getControllableEntity()->rotatePitch(0.2f * sgn(coord.y) * coord.y*coord.y);
     116                       
     117        }
     118    }
    86119
    87120
  • code/branches/rocket/src/modules/weapons/RocketController.h

    r6903 r6905  
    5353            virtual void tick(float dt);
    5454                        SimpleRocket* getRocket(){return this->rocket;};
    55                         void setTarget(Pawn* target);
     55                        void setTarget(WorldEntity* target);
    5656        protected:
    57 
     57                        void moveToPosition(const Vector3& target);
     58                        void setTargetPosition();
     59                        void moveToTargetPosition();
    5860
    5961        private:
    6062                        SimpleRocket* rocket;
     63                        Vector3 targetPosition_;
    6164                        WeakPtr<PlayerInfo> player_;
    6265                                                int haha;
    63                         WeakPtr<Pawn> target_;
     66                        WeakPtr<WorldEntity> target_;
    6467
    6568
  • code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.cc

    r6902 r6905  
    180180        }
    181181    }
     182        void SimpleRocket::setDestroy() {
     183                this->bDestroy_=true;
     184                COUT(0)<<"trying to destroy";
     185        }
    182186
    183187    void SimpleRocket::fired(unsigned int firemode)
  • code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.h

    r6900 r6905  
    6464            virtual void rotatePitch(const Vector2& value);
    6565            virtual void rotateRoll(const Vector2& value);
     66                        void setDestroy();
    6667
    6768            /**
     
    9596            */
    9697            inline void rotatePitch(float value)
    97             { this->rotatePitch(Vector2(value, 0)); }
     98            {   COUT(0)<<"rotated rocket yaw";
     99                                this->rotatePitch(Vector2(value, 0)); }
    98100            /**
    99101            @brief Rotates the SimpleRocket around the z-axis by the specifed amount.
     
    101103            */
    102104            inline void rotateRoll(float value)
    103             { this->rotateRoll(Vector2(value, 0)); }
     105            {
     106                                COUT(0)<<"rotated rocket roll";
     107                                this->rotateRoll(Vector2(value, 0)); }
    104108
    105109            void setOwner(Pawn* owner);
  • code/branches/rocket/src/modules/weapons/weaponmodes/SimpleRocketFire.cc

    r6900 r6905  
    6969                rocket->setVelocity(this->getMuzzleDirection()*this->speed_);
    7070                rocket->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
     71                rocket->setDamage(this->damage_);
     72                WorldEntity* pawnn=(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getTarget());
     73                if (pawnn) {
     74                con->setTarget(pawnn);
     75                }
    7176    }
    7277}
Note: See TracChangeset for help on using the changeset viewer.