Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 15, 2009, 1:44:25 PM (15 years ago)
Author:
rgrieder
Message:

Merged revisions 6054, 6056 and 6057 to particles2 branch.

Location:
code/branches/particles2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • code/branches/particles2

  • code/branches/particles2/src/orxonox/overlays/OrxonoxOverlay.cc

    r5980 r6067  
    359359            (*it).second->rotate(angle);
    360360    }
     361
     362    void OrxonoxOverlay::setOverlayGroup(OverlayGroup* group)
     363    {
     364        if (group != this->group_)
     365        {
     366            if (this->group_)
     367                this->group_->removeElement(this);
     368            this->group_ = group;
     369            this->changedOverlayGroup();
     370        }
     371    }
    361372}
  • code/branches/particles2/src/orxonox/overlays/OrxonoxOverlay.h

    r5980 r6067  
    169169        virtual void changedOwner() {}
    170170
    171         inline void setOverlayGroup(OverlayGroup* group)
    172         {
    173             if (group != this->group_)
    174             {
    175                 this->group_ = group;
    176                 this->changedOverlayGroup();
    177             }
    178         }
     171        void setOverlayGroup(OverlayGroup* group);
    179172        inline OverlayGroup* getOverlayGroup() const
    180173            { return this->group_; }
  • code/branches/particles2/src/orxonox/overlays/OverlayGroup.cc

    r5980 r6067  
    6060    OverlayGroup::~OverlayGroup()
    6161    {
    62         for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
     62        for (std::set< SmartPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
    6363            (*it)->destroy();
     64        this->hudElements_.clear();
    6465    }
    6566
     
    8384    void OverlayGroup::setScale(const Vector2& scale)
    8485    {
    85         for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
     86        for (std::set< SmartPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
    8687            (*it)->scale(scale / this->scale_);
    8788        this->scale_ = scale;
     
    9192    void OverlayGroup::setScroll(const Vector2& scroll)
    9293    {
    93         for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
     94        for (std::set< SmartPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
    9495            (*it)->scroll(scroll - this->scroll_);
    9596        this->scroll_ = scroll;
     
    104105    void OverlayGroup::addElement(OrxonoxOverlay* element)
    105106    {
    106         hudElements_.insert(element);
     107        hudElements_.insert(SmartPtr<OrxonoxOverlay>(element));
    107108        element->setOverlayGroup( this );
    108109        if (this->owner_)
     
    120121    bool OverlayGroup::removeElement(OrxonoxOverlay* element)
    121122    {
    122         if(this->hudElements_.erase(element) == 0)
     123        if(this->hudElements_.erase(SmartPtr<OrxonoxOverlay>(element)) == 0)
    123124            return false;
    124125        return true;
     
    130131        if (index < this->hudElements_.size())
    131132        {
    132             std::set<OrxonoxOverlay*>::const_iterator it = hudElements_.begin();
     133            std::set< SmartPtr<OrxonoxOverlay> >::const_iterator it = hudElements_.begin();
    133134            for (unsigned int i = 0; i != index; ++it, ++i)
    134135                ;
    135             return (*it);
     136            return it->get();
    136137        }
    137138        else
     
    144145        SUPER( OverlayGroup, changedVisibility );
    145146       
    146         for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
     147        for (std::set< SmartPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
    147148            (*it)->changedVisibility(); //inform all Child Overlays that our visibility has changed
    148149    }
     
    152153        this->owner_ = owner;
    153154
    154         for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
     155        for (std::set< SmartPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
    155156            (*it)->setOwner(owner);
    156157    }
  • code/branches/particles2/src/orxonox/overlays/OverlayGroup.h

    r5781 r6067  
    6464        static void scrollGroup(const std::string& name, const Vector2& scroll);
    6565
    66         inline const std::set<OrxonoxOverlay*>& getOverlays() const
     66        inline const std::set< SmartPtr<OrxonoxOverlay> >& getOverlays() const
    6767            { return this->hudElements_; }
    6868
     
    9090
    9191    private:
    92         std::set<OrxonoxOverlay*> hudElements_;    //!< Contains all the OrxonoxOverlays of the this group.
     92        std::set< SmartPtr<OrxonoxOverlay> > hudElements_;    //!< Contains all the OrxonoxOverlays of the this group.
    9393        Vector2 scale_;                            //!< Current scale (independent of the elements).
    9494        Vector2 scroll_;                           //!< Current scrolling offset.
Note: See TracChangeset for help on using the changeset viewer.