[Orxonox-commit 2183] r6899 - code/branches/hudelements/src/modules/overlays/hud

scheusso at orxonox.net scheusso at orxonox.net
Thu May 13 13:19:04 CEST 2010


Author: scheusso
Date: 2010-05-13 13:19:04 +0200 (Thu, 13 May 2010)
New Revision: 6899

Modified:
   code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc
   code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h
Log:
some cleaning up
still segfault when terminating


Modified: code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc	2010-05-13 10:02:14 UTC (rev 6898)
+++ code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc	2010-05-13 11:19:04 UTC (rev 6899)
@@ -98,8 +98,12 @@
 
     if (this->isInitialized())
     {
+        activeObjectListType::iterator it;
+        for( it = activeObjectList_.begin(); it!=activeObjectList_.end(); ++it )
+        {
+            removeObject(it->first);
+        }
         activeObjectList_.clear();
-        respawnObjectSet_.clear();
     }
 }
 
@@ -172,7 +176,8 @@
 //         navText_->setCaption(multi_cast<std::string>(dist));
 //         float textLength = multi_cast<std::string>(dist).size() * navText_->getCharHeight() * 0.3f;
 
-    if (!activeObjectList_.empty()) {
+    if (!activeObjectList_.empty())
+    {
         for (tempRadarViewable = activeObjectList_.begin(); tempRadarViewable!=activeObjectList_.end(); ++tempRadarViewable)
         {
 
@@ -292,8 +297,9 @@
                 tempRadarViewable->second.second->setTop((-pos.y + 1.0f + tempRadarViewable->second.first->getHeight()) * 0.5f);
             }
 
-	     tempRadarViewable->second.first->show();
-	     tempRadarViewable->second.second->show();
+            tempRadarViewable->second.first->show();
+            tempRadarViewable->second.second->show();
+//             tempRadarViewable->second.second->hide();
         }
 
     }
@@ -314,7 +320,8 @@
 @brief Overridden method of OrxonoxOverlay. Usually the entire overlay
        scales with scale(). Here we obviously have to adjust this.
 */
-void HUDNavigation::sizeChanged() {
+void HUDNavigation::sizeChanged()
+{
     // use size to compensate for aspect ratio if enabled.
     float xScale = this->getActualSize().x;
     float yScale = this->getActualSize().y;
@@ -335,7 +342,8 @@
 }
 
 
-void HUDNavigation::addObject(RadarViewable* object) {
+void HUDNavigation::addObject(RadarViewable* object)
+{
     if (object == dynamic_cast<RadarViewable*>(this->getOwner()))
         return;
 
@@ -381,21 +389,22 @@
         // Remove overlays from Ogre
         this->background_->removeChild(it->second.first->getName());
         this->background_->removeChild(it->second.second->getName());
+        // correctly destroy the overlay elements
+        Ogre::OverlayManager::getSingleton().destroyOverlayElement(it->second.first);
+        Ogre::OverlayManager::getSingleton().destroyOverlayElement(it->second.second);
 
         activeObjectList_.erase(viewable);
     }
 }
 
-void HUDNavigation::changedOwner() {
-     
-
- 
-    respawnObjectSet_ = this->getOwner()->getScene()->getRadar()->getRadarObjects();
+void HUDNavigation::changedOwner()
+{
+    respawnObjectSetType respawnObjectSet = this->getOwner()->getScene()->getRadar()->getRadarObjects();
     respawnObjectSetType::iterator respawnObjectSetIt_;
-    for (respawnObjectSetIt_ = respawnObjectSet_.begin(); respawnObjectSetIt_ != respawnObjectSet_.end();
-            ++respawnObjectSetIt_)
+    for (respawnObjectSetIt_ = respawnObjectSet.begin(); respawnObjectSetIt_ != respawnObjectSet.end(); ++respawnObjectSetIt_)
     {
-        if (!(*respawnObjectSetIt_)->isHumanShip_)  HUDNavigation::addObject(*respawnObjectSetIt_);
+        if (!(*respawnObjectSetIt_)->isHumanShip_)
+            this->addObject(*respawnObjectSetIt_);
     }
 
 }

Modified: code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h
===================================================================
--- code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h	2010-05-13 10:02:14 UTC (rev 6898)
+++ code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h	2010-05-13 11:19:04 UTC (rev 6899)
@@ -114,7 +114,6 @@
     activeObjectListType::iterator tempRadarViewable;
         
     typedef std::set<RadarViewable*> respawnObjectSetType;
-    respawnObjectSetType respawnObjectSet_;
     
 
 




More information about the Orxonox-commit mailing list