Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 22, 2008, 12:06:55 AM (16 years ago)
Author:
rgrieder
Message:
  • added blankString to String so you can return ""; even if it's a const std::string&
  • fixed several bugs with aspect correct and margin alignment
  • added console commands for OrxonoxOverlays and OverlayGroups for rotate, scale and scroll (you can access the by name (from name=.. in xml file), e.g. "OrxonoxOverlay rotateOverlay SpeedBar 90)
  • converted everything in overlays/ to 4 spaces/tab ;)
  • removed all using namespace Ogre;
  • added background_ Panel to OrxonoxOverlay, since most of the derived classes can use that
  • should work now, but I'll have to test on a tardis box first
Location:
code/branches/hud/src/orxonox/overlays/hud
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • code/branches/hud/src/orxonox/overlays/hud/HUDBar.cc

    r1614 r1615  
    4343    unsigned int HUDBar::materialcount_s = 0;
    4444
    45     using namespace Ogre;
    46 
    4745    HUDBar::HUDBar()
    4846        : bar_(0)
     
    5452    HUDBar::~HUDBar()
    5553    {
    56         if (this->isInitialized())
    57         {
    58             if (this->bar_)
    59                 OverlayManager::getSingleton().destroyOverlayElement(this->bar_);
    60             // FIXME: Check whether we have to delete the textureUnitState_;
    61         }
     54        if (this->bar_)
     55            Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->bar_);
    6256    }
    6357
     
    8276            barOffsetLeft_s = 0.06f;
    8377            barOffsetTop_s = 0.0f;
    84             this->bar_ = static_cast<PanelOverlayElement*>(OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "Bar" + getUniqueNumberStr()));
     78
     79            this->bar_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
     80                .createOverlayElement("Panel", "HUDBar_bar_" + getUniqueNumberStr()));
    8581            this->bar_->setMaterialName(materialname);
    8682            this->background_->addChild(bar_);
  • code/branches/hud/src/orxonox/overlays/hud/HUDBar.h

    r1614 r1615  
    4141namespace orxonox
    4242{
    43   class _OrxonoxExport HUDBar : public OrxonoxOverlay
    44   {
     43    class _OrxonoxExport HUDBar : public OrxonoxOverlay
     44    {
    4545    public:
    46       HUDBar();
    47       virtual ~HUDBar();
     46        HUDBar();
     47        virtual ~HUDBar();
    4848
    49       virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
     49        virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
    5050
    51       void setValue(float value);
    52       void addColour(float value, const ColourValue& colour);
    53       void clearColours();
     51        virtual void setValue(float value);
     52        void addColour(float value, const ColourValue& colour);
     53        void clearColours();
    5454
    55       inline void setRightToLeft(bool r2l)
     55        inline void setRightToLeft(bool r2l)
    5656        { this->right2Left_ = r2l; }
    57       inline bool getRightToLeft() const
     57        inline bool getRightToLeft() const
    5858        { return this->right2Left_; }
    59       inline float getValue() const
     59        inline float getValue() const
    6060        { return this->value_; }
    6161
    6262    private:
    63       static unsigned int materialcount_s;
    64       bool right2Left_;
    65       bool autoColour_;                   // whether bar changes colour automatically
    66       float value_;                       // progress of bar
    67       Ogre::PanelOverlayElement* bar_;
    68       Ogre::TextureUnitState* textureUnitState_;
    69       std::map<float, ColourValue> colours_;
     63        bool right2Left_;
     64        bool autoColour_;                   //!< whether bar changes colour automatically
     65        float value_;                       //!< progress of bar
    7066
    71       float barWidth_s;
    72       float barHeight_s;
    73       float barOffsetLeft_s;
    74       float barOffsetTop_s;
     67        Ogre::PanelOverlayElement* bar_;
     68        Ogre::TextureUnitState* textureUnitState_;
     69        std::map<float, ColourValue> colours_;
     70
     71        float barWidth_s;
     72        float barHeight_s;
     73        float barOffsetLeft_s;
     74        float barOffsetTop_s;
     75
     76        static unsigned int materialcount_s;
    7577    };
    7678}
  • code/branches/hud/src/orxonox/overlays/hud/HUDFPSText.cc

    r1614 r1615  
    3535namespace orxonox
    3636{
    37   CreateFactory(HUDFPSText);
     37    CreateFactory(HUDFPSText);
    3838
    39   HUDFPSText::HUDFPSText()
    40   {
    41     RegisterObject(HUDFPSText);
    42   }
     39    HUDFPSText::HUDFPSText()
     40    {
     41        RegisterObject(HUDFPSText);
     42    }
    4343
    44   HUDFPSText::~HUDFPSText()
    45   {
    46     if (this->isInitialized())
     44    HUDFPSText::~HUDFPSText()
    4745    {
    4846    }
    49   }
    5047
    51   void HUDFPSText::tick(float dt)
    52   {
    53     float fps = GraphicsEngine::getSingleton().getAverageFPS();
    54     this->text_->setCaption(this->getCaption() + convertToString(fps));
    55   }
     48    void HUDFPSText::tick(float dt)
     49    {
     50        float fps = GraphicsEngine::getSingleton().getAverageFPS();
     51        this->text_->setCaption(this->getCaption() + convertToString(fps));
     52    }
    5653}
  • code/branches/hud/src/orxonox/overlays/hud/HUDFPSText.h

    r1599 r1615  
    3232#include "OrxonoxPrereqs.h"
    3333
    34 #include "HUDText.h"
     34#include "overlays/OverlayText.h"
    3535
    3636namespace orxonox
    3737{
    38   class _OrxonoxExport HUDFPSText : public HUDText, public Tickable
    39   {
    40   public:
    41     HUDFPSText();
    42     virtual ~HUDFPSText();
     38    class _OrxonoxExport HUDFPSText : public OverlayText, public Tickable
     39    {
     40    public:
     41        HUDFPSText();
     42        ~HUDFPSText();
    4343
    44     //virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
     44    private:
     45        void tick(float dt);
    4546
    46     virtual void tick(float dt);
    47 
    48   private:
    49   };
     47    private:
     48    };
    5049}
    5150#endif /* _HUDFPSText_H__ */
  • code/branches/hud/src/orxonox/overlays/hud/HUDNavigation.cc

    r1614 r1615  
    3535
    3636#include "util/Math.h"
     37#include "util/String.h"
    3738#include "core/ConsoleCommand.h"
    3839#include "objects/SpaceShip.h"
     
    4546    CreateFactory(HUDNavigation);
    4647
    47     //HUDNavigation* HUDNavigation::instance_s = 0;
    48 
    49     using namespace Ogre;
    50 
    5148    HUDNavigation::HUDNavigation()
    52       : container_(0)
    53       , navMarker_(0)
    54       , aimMarker_(0)
    55       , navText_(0)
     49        : navMarker_(0)
     50        , aimMarker_(0)
     51        , navText_(0)
    5652    {
    5753        RegisterObject(HUDNavigation);
    58        
    59         /*assert(instance_s == 0); // singleton class
    60         HUDNavigation::instance_s = this;*/
    6154    }
    6255
    6356    HUDNavigation::~HUDNavigation()
    6457    {
    65         if (this->isInitialized())
    66         {
    67             if (this->navMarker_)
    68                 OverlayManager::getSingleton().destroyOverlayElement(this->navMarker_);
    69             if (this->navText_)
    70                 OverlayManager::getSingleton().destroyOverlayElement(this->navText_);
    71             if (this->aimMarker_)
    72                 OverlayManager::getSingleton().destroyOverlayElement(this->aimMarker_);
    73             if (this->container_)
    74                 OverlayManager::getSingleton().destroyOverlayElement(this->container_);
    75         }
    76 
    77         //HUDNavigation::instance_s = 0;
     58        if (this->navMarker_)
     59            Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->navMarker_);
     60        if (this->navText_)
     61            Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->navText_);
     62        if (this->aimMarker_)
     63            Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->aimMarker_);
    7864    }
    7965
     
    8470        if (mode == XMLPort::LoadObject)
    8571        {
    86             // create container because we cannot add a Text element to an Overlay
    87             container_ = static_cast<OverlayContainer*>(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "_navContainer"));
    88 
    8972            // create nav text
    90             navText_ = static_cast<TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton().createOverlayElement("TextArea", getName() + "_navText"));
     73            navText_ = static_cast<Ogre::TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton()
     74                .createOverlayElement("TextArea", "HUDNavigation_navText_" + getUniqueNumberStr()));
    9175            navText_->setCharHeight(0.05f);
    9276            navText_->setFontName("Monofur");
    9377
    9478            // create nav marker
    95             navMarker_ = static_cast<PanelOverlayElement*>(OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "_navMarker"));
     79            navMarker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
     80                .createOverlayElement("Panel", "HUDNavigation_navMarker_" + getUniqueNumberStr()));
    9681            navMarker_->setMaterialName("Orxonox/NavArrows");
    9782            navMarkerSize_ = 0.05; //default
     
    9984
    10085            // create aim marker
    101             aimMarker_ = static_cast<PanelOverlayElement*>(OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "_aimMarker"));
     86            aimMarker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
     87                .createOverlayElement("Panel", "HUDNavigation_aimMarker_" + getUniqueNumberStr()));
    10288            aimMarker_->setMaterialName("Orxonox/NavCrosshair");
    10389            aimMarkerSize_ = 0.04; // default
    10490           
    105             container_->addChild(navMarker_);
    106             container_->addChild(aimMarker_);
    107             container_->addChild(navText_);
    108             container_->show();
    109 
    110             overlay_->add2D(container_);
     91            background_->addChild(navMarker_);
     92            background_->addChild(aimMarker_);
     93            background_->addChild(navText_);
     94
     95            // hide at first
     96            this->setVisibility(false);
    11197        }
    11298
     
    122108    }
    123109
    124     void HUDNavigation::setNavMarkerSize(float size)
    125     {
    126         this->navMarkerSize_ = size;
    127     }
    128 
    129     float HUDNavigation::getNavMarkerSize() const
    130     {
    131         return this->navMarkerSize_;
    132     }
    133 
    134     void HUDNavigation::setAimMarkerSize(float size)
    135     {
    136         this->aimMarkerSize_ = size;
    137     }
    138 
    139     float HUDNavigation::getAimMarkerSize() const
    140     {
    141         return this->aimMarkerSize_;
    142     }
    143 
    144110    void HUDNavigation::setFont(const std::string& font)
    145111    {
     
    148114    }
    149115
    150     std::string HUDNavigation::getFont() const
     116    const std::string& HUDNavigation::getFont() const
    151117    {
    152118        if (this->navText_)
    153119            return this->navText_->getFontName();
    154120        else
    155             return "";
     121            return blankString;
    156122    }
    157123
     
    310276            navText_->setCharHeight(navText_->getCharHeight() * yScale);
    311277    }
    312 
    313     /*static*/ /*HUDNavigation& HUDNavigation::getInstance()
    314     {
    315         assert(instance_s);
    316         return *instance_s;
    317     }*/
    318278}
  • code/branches/hud/src/orxonox/overlays/hud/HUDNavigation.h

    r1614 r1615  
    3939    class _OrxonoxExport HUDNavigation : public OrxonoxOverlay, public Tickable
    4040    {
    41       public:
     41    public:
    4242        HUDNavigation();
    4343        ~HUDNavigation();
     
    4545        void XMLPort(Element& xmlElement, XMLPort::Mode mode);
    4646
    47         void tick(float dt);
    48 
    49         float getDist2Focus() const;
    50 
    51       protected:
     47    private:
    5248        void sizeChanged();
    5349        void angleChanged() { }
    5450        void positionChanged() { }
    5551
    56       private:
    57         HUDNavigation(HUDNavigation& instance);
     52        void tick(float dt);
     53
     54        // XMLPort accessors
     55        void setNavMarkerSize(float size) { this->navMarkerSize_ = size; }
     56        float getNavMarkerSize() const    { return this->navMarkerSize_; }
     57
     58        void setAimMarkerSize(float size) { this->aimMarkerSize_ = size; }
     59        float getAimMarkerSize() const    { return this->aimMarkerSize_; }
     60
     61        void setTextSize(float size);
     62        float getTextSize() const;
     63
     64        void setFont(const std::string& font);
     65        const std::string& getFont() const;
     66
    5867        void updateMarker();
    5968        void updateFocus();
     69        float getDist2Focus() const;
    6070
    61         // XMLPort accessors
    62         void setNavMarkerSize(float size);
    63         float getNavMarkerSize() const;
    64         void setAimMarkerSize(float size);
    65         float getAimMarkerSize() const;
    66         void setTextSize(float size);
    67         float getTextSize() const;
    68         void setFont(const std::string& font);
    69         std::string getFont() const;
    70 
    71         Ogre::OverlayContainer* container_;         //!< Container that holds the navigation elements
    7271        Ogre::PanelOverlayElement* navMarker_;      //!< the panel used to show the arrow and the target marker
    7372        float navMarkerSize_;                       //!< One paramter size of the navigation marker
     
    7675        Ogre::TextAreaOverlayElement* navText_;     //!< Text overlay to display the target distance
    7776        bool wasOutOfView_;                         //!< Performance booster variable: setMaterial is not cheap
    78   };
     77    };
    7978}
    8079
  • code/branches/hud/src/orxonox/overlays/hud/HUDRTRText.cc

    r1614 r1615  
    3535namespace orxonox
    3636{
    37   CreateFactory(HUDRTRText);
     37    CreateFactory(HUDRTRText);
    3838
    39   HUDRTRText::HUDRTRText()
    40   {
    41     RegisterObject(HUDRTRText);
    42   }
     39    HUDRTRText::HUDRTRText()
     40    {
     41        RegisterObject(HUDRTRText);
     42    }
    4343
    44   HUDRTRText::~HUDRTRText()
    45   {
    46     if (this->isInitialized())
     44    HUDRTRText::~HUDRTRText()
    4745    {
    4846    }
    49   }
    5047
    51   void HUDRTRText::tick(float dt)
    52   {
    53     float rtr = GraphicsEngine::getSingleton().getAverageRTR();
    54     this->text_->setCaption(this->getCaption() + convertToString(rtr));
    55   }
     48    void HUDRTRText::tick(float dt)
     49    {
     50        float rtr = GraphicsEngine::getSingleton().getAverageRTR();
     51        this->text_->setCaption(this->getCaption() + convertToString(rtr));
     52    }
    5653}
  • code/branches/hud/src/orxonox/overlays/hud/HUDRTRText.h

    r1599 r1615  
    3232#include "OrxonoxPrereqs.h"
    3333
    34 #include "HUDText.h"
     34#include "overlays/OverlayText.h"
    3535
    3636namespace orxonox
    3737{
    38   class _OrxonoxExport HUDRTRText : public HUDText, public Tickable
    39   {
    40   public:
    41     HUDRTRText();
    42     virtual ~HUDRTRText();
     38    class _OrxonoxExport HUDRTRText : public OverlayText, public Tickable
     39    {
     40    public:
     41        HUDRTRText();
     42        ~HUDRTRText();
    4343
    44     //virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
    45 
    46     virtual void tick(float dt);
    47 
    48   private:
    49   };
     44    private:
     45        void tick(float dt);
     46    };
    5047}
    5148#endif /* _HUDRTRText_H__ */
  • code/branches/hud/src/orxonox/overlays/hud/HUDRadar.cc

    r1614 r1615  
    4545    CreateFactory(HUDRadar);
    4646
    47     using namespace Ogre;
    48 
    4947    HUDRadar::HUDRadar()
    5048        : marker_(0)
     
    5553    HUDRadar::~HUDRadar()
    5654    {
    57         if (this->isInitialized())
     55        if (this->marker_)
     56            Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->marker_);
     57        for (std::vector<Ogre::PanelOverlayElement*>::iterator it = this->radarDots_.begin();
     58            it != this->radarDots_.end(); ++it)
    5859        {
    59             if (this->marker_)
    60                 OverlayManager::getSingleton().destroyOverlayElement(this->marker_);
    61             for (std::vector<Ogre::PanelOverlayElement*>::iterator it = this->radarDots_.begin();
    62                 it != this->radarDots_.end(); ++it)
    63             {
    64                 OverlayManager::getSingleton().destroyOverlayElement(*it);
    65             }
     60            Ogre::OverlayManager::getSingleton().destroyOverlayElement(*it);
    6661        }
    6762    }
     
    6964    void HUDRadar::XMLPort(Element& xmlElement, XMLPort::Mode mode)
    7065    {
     66        if (mode == XMLPort::LoadObject)
     67            this->bCorrectAspect_ = true;
     68
    7169        OrxonoxOverlay::XMLPort(xmlElement, mode);
    7270
    7371        if (mode == XMLPort::LoadObject)
    7472        {
     73            marker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
     74                .createOverlayElement("Panel", "HUDRadar_marker_" + getUniqueNumberStr()));
     75            marker_->setMaterialName("Orxonox/RadarMarker");
     76            overlay_->add2D(marker_);
     77            marker_->hide();
     78
    7579            this->sensitivity_ = 1.0f;
    7680            this->halfDotSizeDistance_ = 3000.0f;
     
    8589        shapeMaterials_[RadarViewable::Triangle] = "RadarSquare.tga";
    8690        shapeMaterials_[RadarViewable::Square]   = "RadarSquare.tga";
    87 
    88         if (mode == XMLPort::LoadObject)
    89         {
    90             marker_ = (Ogre::PanelOverlayElement*)Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "_Marker");
    91             marker_->setMaterialName("Orxonox/RadarMarker");
    92             overlay_->add2D(marker_);
    93             marker_->hide();
    94         }
    9591    }
    9692
  • code/branches/hud/src/orxonox/overlays/hud/HUDRadar.h

    r1614 r1615  
    4444    class _OrxonoxExport HUDRadar : public OrxonoxOverlay, public RadarListener
    4545    {
    46       public:
     46    public:
    4747        HUDRadar();
    4848        ~HUDRadar();
     
    5050        void XMLPort(Element& xmlElement, XMLPort::Mode mode);
    5151
    52         float getRadarSensitivity() const { return this->sensitivity_; }
    53         void setRadarSensitivity(float sensitivity) { this->sensitivity_ = sensitivity; }
    54 
     52    private:
     53        // XML accessors
    5554        float getHalfDotSizeDistance() const { return this->halfDotSizeDistance_; }
    5655        void setHalfDotSizeDistance(float distance) { this->halfDotSizeDistance_ = distance; }
     
    5958        void setMaximumDotSize(float size) { this->maximumDotSize_ = size; }
    6059
    61       private:
     60        float getRadarSensitivity() const { return this->sensitivity_; }
     61        // used also by RadarListener interface!
     62        void setRadarSensitivity(float sensitivity) { this->sensitivity_ = sensitivity; }
     63
     64        // RadarListener interface
    6265        void displayObject(RadarViewable* viewable, bool bIsMarked);
    63         float getRadarSensitivity() { return 1.0f; }
    6466        void radarTick(float dt);
    6567
  • code/branches/hud/src/orxonox/overlays/hud/HUDSpeedBar.cc

    r1614 r1615  
    3434namespace orxonox
    3535{
    36   CreateFactory(HUDSpeedBar);
     36    CreateFactory(HUDSpeedBar);
    3737
    38   using namespace Ogre;
     38    HUDSpeedBar::HUDSpeedBar()
     39    {
     40        RegisterObject(HUDSpeedBar);
    3941
    40   HUDSpeedBar::HUDSpeedBar()
    41   {
    42     RegisterObject(HUDSpeedBar);
     42    }
    4343
    44   }
    45 
    46   HUDSpeedBar::~HUDSpeedBar()
    47   {
    48     if (this->isInitialized())
     44    HUDSpeedBar::~HUDSpeedBar()
    4945    {
    5046    }
    51   }
    5247
    53   void HUDSpeedBar::tick(float dt)
    54   {
    55     SpaceShip* ship = SpaceShip::getLocalShip();
    56     if (ship)
     48    void HUDSpeedBar::tick(float dt)
    5749    {
    58       float v = ship->getVelocity().length();
    59       float vmax = ship->getMaxSpeed();
    60       this->setValue(v/vmax);
     50        SpaceShip* ship = SpaceShip::getLocalShip();
     51        if (ship)
     52        {
     53            float v = ship->getVelocity().length();
     54            float vmax = ship->getMaxSpeed();
     55            this->setValue(v/vmax);
     56        }
    6157    }
    62   }
    6358}
  • code/branches/hud/src/orxonox/overlays/hud/HUDSpeedBar.h

    r1614 r1615  
    3737namespace orxonox
    3838{
    39   class _OrxonoxExport HUDSpeedBar : public HUDBar, public Tickable
    40   {
     39    class _OrxonoxExport HUDSpeedBar : public HUDBar, public Tickable
     40    {
    4141    public:
    42       HUDSpeedBar();
    43       virtual ~HUDSpeedBar();
    44 
    45       //virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
    46 
    47       virtual void tick(float dt);
     42        HUDSpeedBar();
     43        ~HUDSpeedBar();
    4844
    4945    private:
    50 
     46        void tick(float dt);
    5147    };
    5248}
Note: See TracChangeset for help on using the changeset viewer.