Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 22, 2008, 5:25:01 AM (16 years ago)
Author:
landauf
Message:

added several new classes

Location:
code/branches/objecthierarchy/src/orxonox/objects/worldentities
Files:
5 added
7 edited

Legend:

Unmodified
Added
Removed
  • code/branches/objecthierarchy/src/orxonox/objects/worldentities/ControllableEntity.cc

    r1989 r1993  
    5353        this->hud_ = 0;
    5454        this->camera_ = 0;
    55 
     55        this->bDestroyWhenPlayerLeft_ = false;
    5656
    5757        this->velocity_ = Vector3::ZERO;
     
    9494
    9595        if (this->bControlled_)
     96        {
    9697            this->startLocalControl();
     98            this->setObjectMode(network::direction::bidirectional);
     99        }
    97100    }
    98101
     
    105108        this->playerID_ = network::OBJECTID_UNKNOWN;
    106109        this->bControlled_ = false;
     110        this->setObjectMode(network::direction::toclient);
     111
     112        if (this->bDestroyWhenPlayerLeft_)
     113            delete this;
    107114    }
    108115
    109116    void ControllableEntity::updatePlayer()
    110117    {
    111         this->player_ = dynamic_cast<PlayerInfo*>(network::Synchronisable::getSynchronisable(this->playerID_));
    112         if (this->player_ && (this->player_->getPawn() != this))
    113             this->player_->startControl(this);
     118        if (this->playerID_ != network::OBJECTID_UNKNOWN)
     119        {
     120            this->player_ = dynamic_cast<PlayerInfo*>(network::Synchronisable::getSynchronisable(this->playerID_));
     121            if (this->player_ && (this->player_->getPawn() != this))
     122                this->player_->startControl(this);
     123        }
    114124    }
    115125
    116126    void ControllableEntity::startLocalControl()
    117127    {
     128        std::cout << "###### start local control" << std::endl;
    118129        this->camera_ = new Camera();
    119130        this->camera_->requestFocus();
    120 
    121         this->hud_ = new OverlayGroup();
    122         this->hud_->addTemplate(this->hudtemplate_);
     131        this->attach(this->camera_);
     132
     133        if (this->hudtemplate_ != "")
     134        {
     135            this->hud_ = new OverlayGroup();
     136            this->hud_->addTemplate(this->hudtemplate_);
     137        }
    123138    }
    124139
    125140    void ControllableEntity::stopLocalControl()
    126141    {
     142        std::cout << "###### stop local control" << std::endl;
     143        this->detach(this->camera_);
    127144        delete this->camera_;
    128145        this->camera_ = 0;
     
    137154        {
    138155            this->velocity_ += (dt * this->acceleration_);
    139             this->node_->translate(dt * this->velocity_);
     156            this->node_->translate(dt * this->velocity_, Ogre::Node::TS_PARENT);
    140157
    141158            if (Core::isMaster())
     
    150167            }
    151168        }
    152 
    153 //        std::cout << this->getPosition() << std::endl;
    154169    }
    155170
  • code/branches/objecthierarchy/src/orxonox/objects/worldentities/ControllableEntity.h

    r1989 r1993  
    5252                { return this->player_; }
    5353
     54            inline void setDestroyWhenPlayerLeft(bool bDestroy)
     55                { this->bDestroyWhenPlayerLeft_ = bDestroy; }
     56            inline bool getDestroyWhenPlayerLeft() const
     57                { return this->bDestroyWhenPlayerLeft_; }
     58
    5459            virtual void startLocalControl();
    5560            virtual void stopLocalControl();
     
    7075            virtual void switchCamera() {}
    7176
     77            inline const Vector3& getVelocity() const
     78                { return this->velocity_; }
     79            inline const Vector3& getAcceleration() const
     80                { return this->acceleration_; }
     81            inline const std::string& getHudTemplate() const
     82                { return this->hudtemplate_; }
     83
    7284        protected:
    7385            using WorldEntity::setPosition;
     
    7587            using WorldEntity::setOrientation;
    7688            using WorldEntity::rotate;
     89            using WorldEntity::yaw;
     90            using WorldEntity::pitch;
     91            using WorldEntity::roll;
    7792            using WorldEntity::lookAt;
    7893            using WorldEntity::setDirection;
     
    91106            inline void setVelocity(float x, float y, float z)
    92107                { this->velocity_.x = x; this->velocity_.y = y; this->velocity_.z = z; }
    93             inline const Vector3& getVelocity() const
    94                 { return this->velocity_; }
    95108
    96109            inline void setAcceleration(const Vector3& acceleration)
     
    98111            inline void setAcceleration(float x, float y, float z)
    99112                { this->acceleration_.x = x; this->acceleration_.y = y; this->acceleration_.z = z; }
    100             inline const Vector3& getAcceleration() const
    101                 { return this->acceleration_; }
     113
     114            inline void setHudTemplate(const std::string& name)
     115                { this->hudtemplate_ = name; }
    102116
    103117        private:
    104             inline void setHudTemplate(const std::string& name)
    105                 { this->hudtemplate_ = name; }
    106             inline const std::string& getHudTemplate() const
    107                 { return this->hudtemplate_; }
    108 
    109118            void overwrite();
    110119            void processOverwrite();
     
    139148            OverlayGroup* hud_;
    140149            Camera* camera_;
     150            bool bDestroyWhenPlayerLeft_;
    141151    };
    142152}
  • code/branches/objecthierarchy/src/orxonox/objects/worldentities/MovableEntity.cc

    r1989 r1993  
    7979            this->node_->rotate(this->rotationAxis_, this->rotationRate_  * dt);
    8080        }
    81 
    82         std::cout << this->getPosition() << std::endl;
    8381    }
    8482
  • code/branches/objecthierarchy/src/orxonox/objects/worldentities/MovableEntity.h

    r1989 r1993  
    5252            using WorldEntity::setOrientation;
    5353            using WorldEntity::rotate;
     54            using WorldEntity::yaw;
     55            using WorldEntity::pitch;
     56            using WorldEntity::roll;
    5457            using WorldEntity::lookAt;
    5558            using WorldEntity::setDirection;
  • code/branches/objecthierarchy/src/orxonox/objects/worldentities/PositionableEntity.cc

    r1960 r1993  
    5757        REGISTERDATA(this->getOrientation().z, network::direction::toclient);
    5858    }
     59
     60    void PositionableEntity::tick(float dt)
     61    {
     62        // I don't know why but this has to be done to update the position if attached to another Entity
     63        this->node_->translate(Vector3::ZERO);
     64        std::cout << this->getWorldPosition() << std::endl;
     65    }
    5966}
  • code/branches/objecthierarchy/src/orxonox/objects/worldentities/PositionableEntity.h

    r1989 r1993  
    3232#include "OrxonoxPrereqs.h"
    3333#include "WorldEntity.h"
     34#include "objects/Tickable.h"
    3435
    3536namespace orxonox
    3637{
    37     class _OrxonoxExport PositionableEntity : public WorldEntity
     38    class _OrxonoxExport PositionableEntity : public WorldEntity, public Tickable
    3839    {
    3940        public:
     
    4243
    4344            void registerVariables();
     45            virtual void tick(float dt);
    4446
    4547            using WorldEntity::setPosition;
     
    4749            using WorldEntity::setOrientation;
    4850            using WorldEntity::rotate;
     51            using WorldEntity::yaw;
     52            using WorldEntity::pitch;
     53            using WorldEntity::roll;
    4954            using WorldEntity::lookAt;
    5055            using WorldEntity::setDirection;
  • code/branches/objecthierarchy/src/orxonox/objects/worldentities/WorldEntity.cc

    r1989 r1993  
    3434#include "core/CoreIncludes.h"
    3535#include "core/XMLPort.h"
     36#include "util/Convert.h"
    3637
    3738#include "GraphicsEngine.h"
     
    110111        if (object->getParent())
    111112            object->detachFromParent();
     113        else
     114        {
     115            Ogre::Node* parent = object->node_->getParent();
     116            if (parent)
     117                parent->removeChild(object->node_);
     118        }
    112119
    113120        this->node_->addChild(object->node_);
     
    123130        object->parent_ = 0;
    124131        object->parentID_ = (unsigned int)-1;
     132
     133        GraphicsEngine::getInstance().getLevelSceneManager()->getRootSceneNode()->addChild(object->node_);
    125134    }
    126135
Note: See TracChangeset for help on using the changeset viewer.