Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 25, 2008, 1:14:19 AM (16 years ago)
Author:
landauf
Message:

The SpaceShips HUD is working again (Speedbar and Radar)

Location:
code/branches/objecthierarchy2/src/orxonox/objects
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • code/branches/objecthierarchy2/src/orxonox/objects/Radar.cc

    r2087 r2256  
    112112            for (ObjectList<RadarViewable>::iterator itElement = ObjectList<RadarViewable>::begin(); itElement; ++itElement)
    113113            {
    114 /*
    115                 if ((*itElement) != SpaceShip::getLocalShip() && (*itListener)->getRadarSensitivity() > (*itElement)->getRadarObjectCamouflage())
     114                if ((*itListener)->getRadarSensitivity() > (*itElement)->getRadarObjectCamouflage())
    116115                    (*itListener)->displayObject(*itElement, *itElement == this->focus_);
    117 */
    118116            }
    119117        }
     
    128126            this->focus_ = 0;
    129127        }
    130         else
    131         {
    132             Vector3 localPosition;// = SpaceShip::getLocalShip()->getPosition();
     128/*
     129        else if (this->owner_)
     130        {
     131            Vector3 localPosition = this->owner_->getPosition();
    133132            Vector3 targetPosition = localPosition;
    134133            if (*(this->itFocus_))
     
    143142            for (ObjectList<RadarViewable>::iterator it = ObjectList<RadarViewable>::begin(); it; ++it)
    144143            {
    145 /*
    146                 if (*it == SpaceShip::getLocalShip())
     144                if (*it == (RadarViewable*)this->owner_)
    147145                    continue;
    148 */
     146
    149147                float targetDistance = localPosition.squaredDistance((*it)->getWorldPosition());
    150148                if (targetDistance > currentDistance && targetDistance < nextDistance)
     
    171169            }
    172170        }
     171*/
    173172    }
    174173
  • code/branches/objecthierarchy2/src/orxonox/objects/RadarViewable.cc

    r2087 r2256  
    2929#include "OrxonoxStableHeaders.h"
    3030#include "RadarViewable.h"
     31
    3132#include "util/Debug.h"
     33#include "util/Exception.h"
    3234#include "core/CoreIncludes.h"
    33 //#include "objects/WorldEntity.h"
    34 #include "Radar.h"
     35#include "objects/worldentities/WorldEntity.h"
     36#include "objects/Radar.h"
    3537
    3638namespace orxonox
     
    4042    */
    4143    RadarViewable::RadarViewable()
    42         : radarObject_(0)
    43         , radarObjectCamouflage_(0.0f)
    44         , radarObjectType_(Dot)
     44        : radarObjectCamouflage_(0.0f)
     45        , radarObjectShape_(Dot)
    4546        , radarObjectDescription_("staticObject")
    4647    {
     
    5253        Radar* radar = Radar::getInstancePtr();
    5354        if (radar)
    54             this->radarObjectType_ = radar->addObjectDescription(str);
     55            this->radarObjectShape_ = radar->addObjectDescription(str);
    5556        else
    5657        {
     
    6263    const Vector3& RadarViewable::getWorldPosition() const
    6364    {
    64         validate();
    65         return Vector3::ZERO;//this->radarObject_->getWorldPosition();
     65        const WorldEntity* object = this->getWorldEntity();
     66        validate(object);
     67        return object->getWorldPosition();
    6668    }
    6769
    6870    Vector3 RadarViewable::getOrientedVelocity() const
    6971    {
    70         validate();
    71         return Vector3::ZERO;//this->radarObject_->getOrientation() * this->radarObject_->getVelocity();
     72        const WorldEntity* object = this->getWorldEntity();
     73        validate(object);
     74        return object->getWorldOrientation() * object->getVelocity();
    7275    }
    7376}
  • code/branches/objecthierarchy2/src/orxonox/objects/RadarViewable.h

    r2087 r2256  
    4444    class _OrxonoxExport RadarViewable : virtual public OrxonoxClass
    4545    {
    46     class WorldEntity;
    47 
    4846    public:
    4947        enum Shape
     
    5856        virtual ~RadarViewable() { }
    5957
    60         float getRadarObjectCamouflage() const { return this->radarObjectCamouflage_; }
    61         void setRadarObjectCamouflage(float camouflage) { this->radarObjectCamouflage_ = camouflage; }
     58        inline void setRadarObjectCamouflage(float camouflage)
     59            { this->radarObjectCamouflage_ = camouflage; }
     60        inline float getRadarObjectCamouflage() const
     61            { return this->radarObjectCamouflage_; }
    6262
    63         const ColourValue& getRadarObjectColour() const { return this->radarObjectColour_; }
    64         void setRadarObjectColour(const ColourValue& colour) { this->radarObjectColour_ = colour; }
     63        inline void setRadarObjectColour(const ColourValue& colour)
     64            { this->radarObjectColour_ = colour; }
     65        inline const ColourValue& getRadarObjectColour() const
     66            { return this->radarObjectColour_; }
    6567
    66         const std::string& getRadarObjectDescription() const { return this->radarObjectDescription_; }
    6768        void setRadarObjectDescription(const std::string& str);
     69        inline const std::string& getRadarObjectDescription() const
     70            { return this->radarObjectDescription_; }
    6871
    69         const WorldEntity* getWorldEntity() const { return this->radarObject_; }
     72        virtual const WorldEntity* getWorldEntity() const = 0;
     73
    7074        const Vector3& getWorldPosition() const;
    7175        Vector3 getOrientedVelocity() const;
    7276
    73         Shape getRadarObjectType() const { return this->radarObjectType_; }
    74 
    75     protected:
    76         WorldEntity* radarObject_;
     77        inline void setRadarObjectShape(Shape shape)
     78            { this->radarObjectShape_ = shape; }
     79        inline Shape getRadarObjectShape() const
     80            { return this->radarObjectShape_; }
    7781
    7882    private:
    79         void validate() const { if (!this->radarObject_)
    80         { COUT(1) << "Assertation: Every RadarViewable has to be assigned a WorldEntity pointer!" << std::endl; assert(0); } }
     83        void validate(const WorldEntity* object) const
     84        {
     85            if (!object)
     86            {
     87                COUT(1) << "Assertation: Every RadarViewable has to be assigned a WorldEntity pointer!" << std::endl;
     88                assert(0);
     89            }
     90        }
    8191
    8292        float radarObjectCamouflage_;
    83         Shape radarObjectType_;
     93        Shape radarObjectShape_;
    8494        std::string radarObjectDescription_;
    8595        ColourValue radarObjectColour_;
  • code/branches/objecthierarchy2/src/orxonox/objects/items/Engine.cc

    r2254 r2256  
    6464    Engine::~Engine()
    6565    {
     66        if (this->isInitialized() && this->ship_)
     67            this->ship_->setEngine(0);
    6668    }
    6769
     
    111113            Synchronisable* object = Synchronisable::getSynchronisable(this->shipID_);
    112114            if (object)
    113                 this->ship_ = dynamic_cast<SpaceShip*>(object);
     115                this->addToSpaceShip(dynamic_cast<SpaceShip*>(object));
    114116        }
    115117    }
     
    182184        this->ship_ = ship;
    183185        if (ship)
     186        {
    184187            this->shipID_ = ship->getObjectID();
     188            if (ship->getEngine() != this)
     189                ship->setEngine(this);
     190        }
    185191    }
    186192
  • code/branches/objecthierarchy2/src/orxonox/objects/items/Engine.h

    r2254 r2256  
    7272                { this->maxSpeedUpDown_ = speed; }
    7373
     74            inline float getMaxSpeedFront() const
     75                { return this->maxSpeedFront_; }
     76            inline float getMaxSpeedBack() const
     77                { return this->maxSpeedBack_; }
     78            inline float getMaxSpeedLeftRight() const
     79                { return this->maxSpeedLeftRight_; }
     80            inline float getMaxSpeedUpDown() const
     81                { return this->maxSpeedUpDown_; }
     82
    7483            inline void setAccelerationFront(float acceleration)
    7584                { this->accelerationFront_ = acceleration; }
     
    8291            inline void setAccelerationUpDown(float acceleration)
    8392                { this->accelerationUpDown_ = acceleration; }
     93
     94            inline float getAccelerationFront() const
     95                { return this->accelerationFront_; }
     96            inline float getAccelerationBrake() const
     97                { return this->accelerationBrake_; }
     98            inline float getAccelerationBack() const
     99                { return this->accelerationBack_; }
     100            inline float getAccelerationLeftRight() const
     101                { return this->accelerationLeftRight_; }
     102            inline float getAccelerationUpDown() const
     103                { return this->accelerationUpDown_; }
    84104
    85105            virtual const Vector3& getDirection() const;
  • code/branches/objecthierarchy2/src/orxonox/objects/worldentities/ControllableEntity.cc

    r2254 r2256  
    168168            {
    169169                this->client_overwrite_ = this->server_overwrite_;
    170 COUT(0) << "CE: bidirectional synchronization" << std::endl;
    171170                this->setObjectMode(direction::bidirectional);
    172171            }
     
    202201    void ControllableEntity::startLocalHumanControl()
    203202    {
    204 //        std::cout << this->getObjectID() << " ###### start local control" << std::endl;
    205203        this->camera_ = new Camera(this);
    206204        this->camera_->requestFocus();
     
    216214            this->hud_ = new OverlayGroup(this);
    217215            this->hud_->addTemplate(this->hudtemplate_);
     216            this->hud_->setOwner(this);
    218217        }
    219218    }
     
    221220    void ControllableEntity::stopLocalHumanControl()
    222221    {
    223 //        std::cout << "###### stop local control" << std::endl;
    224222        this->camera_->detachFromParent();
    225223        delete this->camera_;
     
    244242            else if (this->bHasLocalController_)
    245243            {
    246 //                COUT(2) << "setting client position" << endl;
    247244                this->client_velocity_ = this->velocity_;
    248245                this->client_position_ = this->node_->getPosition();
     
    254251    {
    255252        REGISTERSTRING(this->cameraPositionTemplate_, direction::toclient);
     253        REGISTERSTRING(this->hudtemplate_, direction::toclient);
    256254
    257255        REGISTERDATA(this->client_overwrite_,   direction::toserver);
     
    304302        if (this->server_overwrite_ == this->client_overwrite_)
    305303        {
    306 //            COUT(2) << "callback: setting client position" << endl;
    307304            this->node_->setPosition(this->client_position_);
    308305            this->server_position_ = this->client_position_;
    309306        }
    310 //        else
    311 //          COUT(2) << "callback: not setting client position" << endl;
    312307    }
    313308
  • code/branches/objecthierarchy2/src/orxonox/objects/worldentities/WorldEntity.h

    r2212 r2256  
    7272            inline void translate(float x, float y, float z, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL)
    7373                { this->translate(Vector3(x, y, z), relativeTo); }
     74
     75            virtual inline const Vector3& getVelocity() const
     76                { return Vector3::ZERO; }
    7477
    7578            virtual void setOrientation(const Quaternion& orientation) = 0;
  • code/branches/objecthierarchy2/src/orxonox/objects/worldentities/pawns/Pawn.cc

    r2171 r2256  
    6161        this->weaponSystem_->getWeaponSetPointer(0)->getWeaponSlotPointer(0)->setAmmoType(true);
    6262        */
     63
     64        this->setRadarObjectColour(ColourValue::Red);
     65        this->setRadarObjectShape(RadarViewable::Dot);
    6366
    6467        this->registerVariables();
  • code/branches/objecthierarchy2/src/orxonox/objects/worldentities/pawns/Pawn.h

    r2098 r2256  
    3333
    3434#include "objects/worldentities/ControllableEntity.h"
     35#include "objects/RadarViewable.h"
    3536
    3637namespace orxonox
    3738{
    38     class _OrxonoxExport Pawn : public ControllableEntity
     39    class _OrxonoxExport Pawn : public ControllableEntity, public RadarViewable
    3940    {
    4041        public:
     
    7879            virtual void postSpawn();
    7980
     81            inline const WorldEntity* getWorldEntity() const
     82                { return (WorldEntity*)this; }
     83
    8084        protected:
    8185            virtual void spawn();
  • code/branches/objecthierarchy2/src/orxonox/objects/worldentities/pawns/SpaceShip.cc

    r2254 r2256  
    229229        }
    230230    }
     231
     232    void SpaceShip::setEngine(Engine* engine)
     233    {
     234        this->engine_ = engine;
     235        if (engine && engine->getShip() != this)
     236            engine->addToSpaceShip(this);
     237    }
    231238}
  • code/branches/objecthierarchy2/src/orxonox/objects/worldentities/pawns/SpaceShip.h

    r2254 r2256  
    5858            virtual void boost();
    5959
     60            void setEngine(Engine* engine);
     61            inline Engine* getEngine() const
     62                { return this->engine_; }
     63
    6064            void setMaxRotation(const Degree& value)
    6165                { this->maxRotation_ = value; }
Note: See TracChangeset for help on using the changeset viewer.