Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 29, 2008, 11:37:19 AM (16 years ago)
Author:
landauf
Message:

added some new graphical classes

Location:
code/branches/objecthierarchy/src/orxonox/tools
Files:
2 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.cc

    r2023 r2044  
    3232#include <sstream>
    3333#include <cassert>
     34
    3435#include <OgreSceneManager.h>
     36#include <OgreBillboard.h>
    3537
    36 #include "util/Math.h"
     38#include "util/Convert.h"
     39#include "util/String.h"
    3740
    3841namespace orxonox
     
    4548    }
    4649
     50    BillboardSet::~BillboardSet()
     51    {
     52        this->destroyBillboardSet();
     53    }
     54
    4755    void BillboardSet::setBillboardSet(Ogre::SceneManager* scenemanager, const std::string& file, int count)
    4856    {
    49         assert(scenemanager);
    50 
    51         std::ostringstream name;
    52         name << (BillboardSet::billboardSetCounter_s++);
    53         this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + name.str(), count);
    54         this->billboardSet_->createBillboard(Vector3::ZERO);
    55         this->billboardSet_->setMaterialName(file);
    56 
    57         this->scenemanager_ = scenemanager;
     57        this->setBillboardSet(scenemanager, file, Vector3::ZERO, count);
    5858    }
    5959
    6060    void BillboardSet::setBillboardSet(Ogre::SceneManager* scenemanager, const std::string& file, const ColourValue& colour, int count)
    6161    {
    62         assert(scenemanager);
    63 
    64         std::ostringstream name;
    65         name << (BillboardSet::billboardSetCounter_s++);
    66         this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + name.str(), count);
    67         this->billboardSet_->createBillboard(Vector3::ZERO, colour);
    68         this->billboardSet_->setMaterialName(file);
    69 
    70         this->scenemanager_ = scenemanager;
     62        this->setBillboardSet(scenemanager, file, colour, Vector3::ZERO, count);
    7163    }
    7264
     
    7466    {
    7567        assert(scenemanager);
     68        this->destroyBillboardSet();
    7669
    77         std::ostringstream name;
    78         name << (BillboardSet::billboardSetCounter_s++);
    79         this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + name.str(), count);
    80         this->billboardSet_->createBillboard(position);
    81         this->billboardSet_->setMaterialName(file);
     70        try
     71        {
     72            this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
     73            this->billboardSet_->createBillboard(position);
     74            this->billboardSet_->setMaterialName(file);
     75        }
     76        catch (...)
     77        {
     78            COUT(1) << "Error: Couln't load billboard \"" << file << "\"" << std::endl;
     79        }
    8280
    8381        this->scenemanager_ = scenemanager;
     
    8785    {
    8886        assert(scenemanager);
     87        this->destroyBillboardSet();
    8988
    90         std::ostringstream name;
    91         name << (BillboardSet::billboardSetCounter_s++);
    92         this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + name.str(), count);
    93         this->billboardSet_->createBillboard(position, colour);
    94         this->billboardSet_->setMaterialName(file);
     89        try
     90        {
     91            this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
     92            this->billboardSet_->createBillboard(position, colour);
     93            this->billboardSet_->setMaterialName(file);
     94        }
     95        catch (...)
     96        {
     97            COUT(1) << "Error: Couln't load billboard \"" << file << "\"" << std::endl;
     98        }
    9599
    96100        this->scenemanager_ = scenemanager;
    97101    }
    98102
    99     BillboardSet::~BillboardSet()
     103    void BillboardSet::destroyBillboardSet()
    100104    {
    101105        if (this->billboardSet_ && this->scenemanager_)
    102106            this->scenemanager_->destroyBillboardSet(this->billboardSet_);
    103107    }
     108
     109    const std::string& BillboardSet::getName() const
     110    {
     111        if (this->billboardSet_)
     112            return this->billboardSet_->getName();
     113        else
     114            return BLANKSTRING;
     115    }
     116
     117    void BillboardSet::setVisible(bool visible)
     118    {
     119        if (this->billboardSet_)
     120            this->billboardSet_->setVisible(visible);
     121    }
     122
     123    bool BillboardSet::getVisible() const
     124    {
     125        if (this->billboardSet_)
     126            return this->billboardSet_->getVisible();
     127        else
     128            return false;
     129    }
     130
     131    void BillboardSet::setColour(const ColourValue& colour)
     132    {
     133        if (this->billboardSet_)
     134        {
     135            for (int i = 0; i < this->billboardSet_->getNumBillboards(); ++i)
     136                this->billboardSet_->getBillboard(i)->setColour(colour);
     137        }
     138    }
     139
     140    const ColourValue& BillboardSet::getColour() const
     141    {
     142        if (this->billboardSet_ && this->billboardSet_->getNumBillboards() > 0)
     143        {
     144            return this->billboardSet_->getBillboard(0)->getColour();
     145        }
     146        else
     147            return ColourValue::White;
     148    }
     149
     150    void BillboardSet::setMaterial(const std::string& material)
     151    {
     152        if (this->billboardSet_)
     153            this->billboardSet_->setMaterialName(material);
     154    }
     155
     156    const std::string& BillboardSet::getMaterial() const
     157    {
     158        if (this->billboardSet_)
     159            return this->billboardSet_->getMaterialName();
     160        else
     161            return BLANKSTRING;
     162    }
    104163}
  • code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.h

    r2019 r2044  
    4444            BillboardSet();
    4545            ~BillboardSet();
     46
    4647            void setBillboardSet(Ogre::SceneManager* scenemanager, const std::string& file, int count = 1);
    4748            void setBillboardSet(Ogre::SceneManager* scenemanager, const std::string& file, const ColourValue& colour, int count = 1);
     
    5253                { return this->billboardSet_; }
    5354
    54             inline const std::string& getName() const
    55                 { return this->billboardSet_->getName(); }
     55            const std::string& getName() const;
    5656
    57             inline void setVisible(bool visible)
    58                 { this->billboardSet_->setVisible(visible); }
    59             inline bool getVisible() const
    60                 { return this->billboardSet_->getVisible(); }
     57            void setVisible(bool visible);
     58            bool getVisible() const;
     59
     60            void setColour(const ColourValue& colour);
     61            const ColourValue& getColour() const;
     62
     63            void setMaterial(const std::string& material);
     64            const std::string& getMaterial() const;
    6165
    6266        private:
     67            void destroyBillboardSet();
     68
    6369            static unsigned int billboardSetCounter_s;
    6470            Ogre::BillboardSet* billboardSet_;
Note: See TracChangeset for help on using the changeset viewer.