[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