Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 26, 2011, 12:58:09 AM (13 years ago)
Author:
dafrick
Message:

Merging bigships branch into presentation branch.

Location:
code/branches/presentation
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentation

  • code/branches/presentation/src/orxonox/items/Engine.cc

    r8580 r8589  
    3535#include "Scene.h"
    3636#include "worldentities/pawns/SpaceShip.h"
    37 #include "tools/Shader.h"
     37#include "core/Template.h"
    3838
    3939namespace orxonox
     
    4747        this->ship_ = 0;
    4848        this->shipID_ = OBJECTID_UNKNOWN;
     49        this->relativePosition_ = Vector3(0,0,0);
    4950
    5051        this->boostFactor_ = 1.5;
     
    6263        this->accelerationUpDown_ = 0.0;
    6364
    64         this->boostBlur_ = 0;
    65 
    6665        this->speedAdd_ = 0.0;
    6766        this->speedMultiply_ = 1.0;
     
    7372    Engine::~Engine()
    7473    {
    75         if (this->isInitialized() && this->ship_)
    76         {
    77             this->ship_->setEngine(0);
    78 
    79             if (this->boostBlur_)
    80                 this->boostBlur_->destroy();
    81         }
     74
    8275    }
    8376
     
    9891        XMLPortParam(Engine, "accelerationleftright", setAccelerationLeftRight, setAccelerationLeftRight, xmlelement, mode);
    9992        XMLPortParam(Engine, "accelerationupdown",    setAccelerationUpDown,    setAccelerationUpDown,    xmlelement, mode);
     93
     94        XMLPortParam(Engine, "position", setRelativePosition, getRelativePosition, xmlelement, mode);
     95        XMLPortParam(Engine, "template", setEngineTemplate, getEngineTemplate, xmlelement, mode);
    10096    }
    10197
    10298    void Engine::setConfigValues()
    10399    {
    104         SetConfigValueExternal(bEnableMotionBlur_, "GraphicsSettings", "enableMotionBlur", true)
    105             .description("Enable or disable the motion blur effect when moving very fast")
    106             .callback(this, &Engine::changedEnableMotionBlur);
    107         SetConfigValueExternal(blurStrength_, "GraphicsSettings", "blurStrength", 3.0f)
    108             .description("Defines the strength of the motion blur effect");
    109100    }
    110101
     
    202193        }
    203194
    204         this->ship_->setAcceleration(this->ship_->getOrientation() * (acceleration*this->getSpeedMultiply()+Vector3(0,0,-this->getSpeedAdd())));
    205 
    206         this->ship_->setSteeringDirection(Vector3::ZERO);
    207 
    208         if (this->bEnableMotionBlur_ && !this->boostBlur_ && this->ship_->hasLocalController() && this->ship_->hasHumanController())
    209         {
    210             this->boostBlur_ = new Shader(this->ship_->getScene()->getSceneManager());
    211             this->boostBlur_->setCompositorName("Radial Blur");
    212         }
    213 
    214         if (this->boostBlur_ && this->maxSpeedFront_ != 0 && this->boostFactor_ != 1)
    215         {
    216             float blur = this->blurStrength_ * clamp((-velocity.z - this->maxSpeedFront_) / ((this->boostFactor_ - 1) * this->maxSpeedFront_), 0.0f, 1.0f);
    217 
    218             this->boostBlur_->setVisible(blur > 0);
    219             this->boostBlur_->setParameter(0, 0, "sampleStrength", blur);
     195        // NOTE: Bullet always uses global coordinates.
     196        this->ship_->addAcceleration(this->ship_->getOrientation() * (acceleration*this->getSpeedMultiply()+Vector3(0,0,-this->getSpeedAdd())), this->ship_->getOrientation() * this->relativePosition_);
     197
     198        // Hack to reset a temporary variable "direction"
     199        this->ship_->oneEngineTickDone();
     200        if(!this->ship_->hasEngineTicksRemaining())
     201        {
     202            this->ship_->setSteeringDirection(Vector3::ZERO);
     203            this->ship_->resetEngineTicks();
    220204        }
    221205    }
     
    224208    {
    225209        SUPER(Engine, changedActivity);
    226 
    227         if (this->boostBlur_)
    228             this->boostBlur_->setVisible(this->isVisible());
    229210    }
    230211
     
    236217        {
    237218            this->shipID_ = ship->getObjectID();
    238             if (ship->getEngine() != this)
    239                 ship->setEngine(this);
    240 
    241             if (this->boostBlur_)
    242             {
    243                 this->boostBlur_->destroy();
    244                 this->boostBlur_ = 0;
    245             }
     219            if (!ship->hasEngine(this))
     220                ship->addEngine(this);
    246221        }
    247222    }
     
    265240    }
    266241
    267     void Engine::changedEnableMotionBlur()
    268     {
    269         if (!this->bEnableMotionBlur_)
    270         {
    271             this->boostBlur_->destroy();
    272             this->boostBlur_ = 0;
     242    void Engine::loadEngineTemplate()
     243    {
     244        if(!this->engineTemplate_.empty())
     245        {
     246            COUT(4)<<"Loading an engine template: "<<this->engineTemplate_<<"\n";
     247            Template *temp = Template::getTemplate(this->engineTemplate_);
     248            if(temp)
     249            {
     250                this->addTemplate(temp);
     251            }
    273252        }
    274253    }
  • code/branches/presentation/src/orxonox/items/Engine.h

    r8079 r8589  
    5454            inline SpaceShip* getShip() const
    5555                { return this->ship_; }
     56
     57            inline void setRelativePosition(const Vector3 &position)
     58                { this->relativePosition_ = position; }
     59            inline Vector3& getRelativePosition()
     60                { return this->relativePosition_; }
    5661
    5762            inline void setBoostFactor(float factor)
     
    119124                { this->speedMultiply_=speedMultiply; }
    120125
     126           
     127            inline void setEngineTemplate(const std::string& temp)
     128                { this->engineTemplate_ = temp; this->loadEngineTemplate(); }
     129            inline const std::string& getEngineTemplate() const
     130                { return this->engineTemplate_; }
     131
    121132        protected:
    122133            virtual std::vector<PickupCarrier*>* getCarrierChildren(void) const
    123134                { return new std::vector<PickupCarrier*>(); }
    124135            virtual PickupCarrier* getCarrierParent(void) const;
     136           
     137            void loadEngineTemplate();
    125138
    126139        private:
    127140            void registerVariables();
    128141            void networkcallback_shipID();
    129             void changedEnableMotionBlur();
     142
     143            std::string engineTemplate_;
    130144
    131145            SpaceShip* ship_;
    132146            unsigned int shipID_;
     147            Vector3 relativePosition_;
    133148
    134149            float boostFactor_;
     
    148163            float accelerationLeftRight_;
    149164            float accelerationUpDown_;
    150 
    151             Shader* boostBlur_;
    152             float blurStrength_;
    153             bool bEnableMotionBlur_;
    154165    };
    155166}
Note: See TracChangeset for help on using the changeset viewer.