Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 8223


Ignore:
Timestamp:
Apr 10, 2011, 11:09:36 AM (14 years ago)
Author:
dafrick
Message:

Streamlining boost.

Location:
code/branches/steering/src/orxonox
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • code/branches/steering/src/orxonox/controllers/HumanController.cc

    r8079 r8223  
    4242    extern const std::string __CC_fire_name = "fire";
    4343    extern const std::string __CC_suicide_name = "suicide";
     44    const std::string __CC_boost_name = "boost";
    4445
    4546    SetConsoleCommand("HumanController", "moveFrontBack",          &HumanController::moveFrontBack ).addShortcut().setAsInputCommand();
     
    5152    SetConsoleCommand("HumanController", __CC_fire_name,           &HumanController::fire          ).addShortcut().keybindMode(KeybindMode::OnHold);
    5253    SetConsoleCommand("HumanController", "reload",                 &HumanController::reload        ).addShortcut();
    53     SetConsoleCommand("HumanController", "boost",                  &HumanController::boost         ).addShortcut().keybindMode(KeybindMode::OnHold);
     54    SetConsoleCommand("HumanController", __CC_boost_name,          &HumanController::toggleBoost   ).addShortcut().keybindMode(KeybindMode::OnPress);
    5455    SetConsoleCommand("HumanController", "greet",                  &HumanController::greet         ).addShortcut();
    5556    SetConsoleCommand("HumanController", "switchCamera",           &HumanController::switchCamera  ).addShortcut();
     
    7273
    7374        controlPaused_ = false;
     75        this->boosting_ = false;
    7476
    7577        HumanController::localController_s = this;
     
    163165    }
    164166
    165     void HumanController::boost()
    166     {
    167         if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
    168             HumanController::localController_s->controllableEntity_->boost();
     167    /**
     168    @brief
     169        Static method,toggles boosting.
     170    */
     171    /*static*/ void HumanController::toggleBoost()
     172    {
     173        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
     174            HumanController::localController_s->toggleBoosting();
     175    }
     176   
     177    /**
     178    @brief
     179        Toggles the boosting mode.
     180        Changes the keybind mode of the boost console command and tells the ControllableEntity to boost (or not boost anymore).
     181    */
     182    void HumanController::toggleBoosting(void)
     183    {
     184        this->boosting_ = !this->boosting_;
     185       
     186        // The keybind mode of the boosting console command is onRelease if in boosting mode and onPress of not in boosting mode.
     187        if(this->boosting_)
     188            ModifyConsoleCommand(__CC_boost_name).keybindMode(KeybindMode::OnRelease);
     189        else
     190            ModifyConsoleCommand(__CC_boost_name).keybindMode(KeybindMode::OnPress);
     191
     192        this->controllableEntity_->boost(this->boosting_);
    169193    }
    170194
  • code/branches/steering/src/orxonox/controllers/HumanController.h

    r8079 r8223  
    6464            static void reload();
    6565
    66             static void boost();
     66            static void toggleBoost(); // Static method,toggles boosting.
     67            /**
     68            @brief Check whether the HumanController is in boosting mode.
     69            @return Returns true if it is, false if not.
     70            */
     71            inline bool isBoosting(void)
     72                { return this->boosting_; }
     73            void toggleBoosting(void); // Toggles the boosting mode.
     74           
    6775            static void greet();
    6876            static void switchCamera();
     
    92100            static HumanController* localController_s;
    93101            bool controlPaused_;
     102       
     103        private:
     104            bool boosting_; // Whether the HumanController is in boosting mode or not.
     105
    94106    }; // tolua_export
    95107} // tolua_export
  • code/branches/steering/src/orxonox/items/Engine.cc

    r8079 r8223  
    204204        this->ship_->setAcceleration(this->ship_->getOrientation() * (acceleration*this->getSpeedMultiply()+Vector3(0,0,-this->getSpeedAdd())));
    205205
    206         if (!this->ship_->getPermanentBoost())
    207             this->ship_->setBoost(false);
    208206        this->ship_->setSteeringDirection(Vector3::ZERO);
    209207
  • code/branches/steering/src/orxonox/worldentities/ControllableEntity.cc

    r7892 r8223  
    8484        this->client_angular_velocity_ = Vector3::ZERO;
    8585
    86 
    8786        this->setConfigValues();
    8887        this->setPriority( Priority::VeryHigh );
  • code/branches/steering/src/orxonox/worldentities/ControllableEntity.h

    r7889 r8223  
    9393            virtual void reload() {}
    9494
    95             virtual void boost() {}
     95            /**
     96            @brief Tells the ControllableEntity to either start or stop boosting.
     97                   This doesn't mean, that the ControllableEntity will do so, there might be additional restrictions on boosting, but if it can, then it will.
     98            @param bBoost If true the ControllableEntity is told to start boosting, if false it is told to stop.
     99            */
     100            virtual void boost(bool bBoost) {}
     101           
    96102            virtual void greet() {}
    97103            virtual void switchCamera();
  • code/branches/steering/src/orxonox/worldentities/pawns/SpaceShip.cc

    r7860 r8223  
    5353        this->localAngularAcceleration_.setValue(0, 0, 0);
    5454        this->bBoost_ = false;
    55         this->bPermanentBoost_ = false;
    5655        this->steering_ = Vector3::ZERO;
    5756        this->engine_ = 0;
     
    103102        registerVariable(this->auxilaryThrust_, VariableDirection::ToClient);
    104103        registerVariable(this->rotationThrust_, VariableDirection::ToClient);
     104        registerVariable(this->boostPower_, VariableDirection::ToClient);
     105        registerVariable(this->boostPowerRate_, VariableDirection::ToClient);
     106        registerVariable(this->boostRate_, VariableDirection::ToClient);
     107        registerVariable(this->boostCooldownDuration_, VariableDirection::ToClient);
    105108    }
    106109
     
    207210    }
    208211
    209     // TODO: something seems to call this function every tick, could probably handled a little more efficiently!
    210     void SpaceShip::setBoost(bool bBoost)
    211     {
    212         if(bBoost == this->bBoost_)
    213             return;
    214 
    215         if(bBoost)
    216             this->boost();
    217         else
    218         {
     212    void SpaceShip::fire()
     213    {
     214    }
     215
     216    /**
     217    @brief
     218        Starts or stops boosting.
     219    @param bBoost
     220        Whether to start or stop boosting.
     221    */
     222    void SpaceShip::boost(bool bBoost)
     223    {
     224        if(bBoost && !this->bBoostCooldown_)
     225            this->bBoost_ = true;
     226        if(!bBoost)
    219227            this->bBoost_ = false;
    220         }
    221     }
    222 
    223     void SpaceShip::fire()
    224     {
    225     }
    226 
    227     void SpaceShip::boost()
    228     {
    229         if(!this->bBoostCooldown_)
    230             this->bBoost_ = true;
    231228    }
    232229
  • code/branches/steering/src/orxonox/worldentities/pawns/SpaceShip.h

    r7801 r8223  
    5959
    6060            virtual void fire();
    61             virtual void boost();
     61            virtual void boost(bool bBoost); // Starts or stops boosting.
    6262
    6363            void setEngine(Engine* engine);
     
    7070                { return this->steering_; }
    7171
    72             void setBoost(bool bBoost);
    7372            inline bool getBoost() const
    7473                { return this->bBoost_; }
     
    7978                { return this->enginetemplate_; }
    8079
    81             inline void setPermanentBoost(bool bPermanent)
    82                 { this->bPermanentBoost_ = bPermanent; }
    83             inline bool getPermanentBoost() const
    84                 { return this->bPermanentBoost_; }
    85 
    8680        protected:
    8781            virtual std::vector<PickupCarrier*>* getCarrierChildren(void) const;
     
    9084            bool bBoost_;
    9185            bool bBoostCooldown_;
    92             bool bPermanentBoost_;
    9386            float boostPower_;
    9487            float initialBoostPower_;
Note: See TracChangeset for help on using the changeset viewer.