[Orxonox-commit 2181] r6897 - code/branches/hudelements/src/modules/overlays/hud

sfluecki at orxonox.net sfluecki at orxonox.net
Tue May 11 14:56:32 CEST 2010


Author: sfluecki
Date: 2010-05-11 14:56:32 +0200 (Tue, 11 May 2010)
New Revision: 6897

Modified:
   code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc
   code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h
   code/branches/hudelements/src/modules/overlays/hud/HUDRadar.cc
Log:
Updates in der reinitialisierung von HUDNavigation -> changes in constructor & destructor of HUDNavigation.cc / apparently there is still a segfault when starting the game.

Modified: code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc	2010-05-10 15:02:26 UTC (rev 6896)
+++ code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc	2010-05-11 12:56:32 UTC (rev 6897)
@@ -45,6 +45,7 @@
 #include "controllers/HumanController.h"
 #include "worldentities/pawns/Pawn.h"
 #include "worldentities/WorldEntity.h"
+#include "interfaces/RadarViewable.h"
 
 namespace orxonox
 {
@@ -54,16 +55,19 @@
         : OrxonoxOverlay(creator)
 {
     RegisterObject(HUDNavigation);
+
+    setFont("Monofur");
+    setTextSize(0.05f);
+    setNavMarkerSize(0.05f);
+
+    respawnObjectSet_ = this->getOwner()->getScene()->getRadar()->getRadarObjects();  
+
+    for (respawnObjectSetIt_ = respawnObjectSet_.begin(); respawnObjectSetIt_ != respawnObjectSet_.end();
+            ++respawnObjectSetIt_)
+    {
+        if (!(*respawnObjectSetIt_)->isHumanShip_)  addObject(*respawnObjectSetIt_);
+    }
     
-     
-     const std::set<RadarViewable*>& respawnObjectSet_ = this->getOwner()->getScene()->getRadar()->getRadarObjects();
-     std::set<RadarViewable*>::const_iterator respawnObjectSetIt_;
-     
-     if(!respawnObjectSet_.empty()){
-     for(respawnObjectSetIt_ = respawnObjectSet_.begin(); respawnObjectSetIt_ != respawnObjectSet_.end();
-	 ++respawnObjectSetIt_){ addObject(*respawnObjectSetIt_);}
-     }
-    
 //         // create nav text
 //         navText_ = static_cast<Ogre::TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton()
 //             .createOverlayElement("TextArea", "HUDNavigation_navText_" + getUniqueNumberString()));
@@ -73,49 +77,39 @@
 //             .createOverlayElement("Panel", "HUDNavigation_navMarker_" + getUniqueNumberString()));
 //         navMarker_->setMaterialName("Orxonox/NavArrows");
 
-    /*
-            // create aim marker
-            aimMarker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
-                .createOverlayElement("Panel", "HUDNavigation_aimMarker_" + getUniqueNumberString()));
-            aimMarker_->setMaterialName("Orxonox/NavCrosshair");
-            this->wasOutOfView_ = true; // Ensure the material is changed right the first time..
+        /*
+                // create aim marker
+                aimMarker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
+                    .createOverlayElement("Panel", "HUDNavigation_aimMarker_" + getUniqueNumberString()));
+                aimMarker_->setMaterialName("Orxonox/NavCrosshair");
+                this->wasOutOfView_ = true; // Ensure the material is changed right the first time..
 
 
-    */
-    /*
-            background_->addChild(navMarker_);*/
+        */
+        /*
+                background_->addChild(navMarker_);*/
 //        background_->addChild(aimMarker_);
 //         background_->addChild(navText_);
 
-    // hide at first
+        // hide at first
 //         this->setVisible(false);
 
 
-    setFont("Monofur");
-    setTextSize(0.05f);
-    setNavMarkerSize(0.05f);
+
 //         setAimMarkerSize(0.04f);
+    
 }
 
-HUDNavigation::~HUDNavigation()
-{
+HUDNavigation::~HUDNavigation() {
 
     if (this->isInitialized())
     {
-        if (!activeObjectList_.empty())
-        {
-            for (tempRadarViewable = activeObjectList_.begin(); tempRadarViewable!=activeObjectList_.end(); ++tempRadarViewable)
-            {
-                Ogre::OverlayManager::getSingleton().destroyOverlayElement(tempRadarViewable->second.first);
-                Ogre::OverlayManager::getSingleton().destroyOverlayElement(tempRadarViewable->second.second);
-//            Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->aimMarker_);
-            }
-        }
+        activeObjectList_.clear();
+        respawnObjectSet_.clear();
     }
 }
 
-void HUDNavigation::XMLPort(Element& xmlElement, XMLPort::Mode mode)
-{
+void HUDNavigation::XMLPort(Element& xmlElement, XMLPort::Mode mode) {
     SUPER(HUDNavigation, XMLPort, xmlElement, mode);
 
     XMLPortParam(HUDNavigation, "font",     setFont,     getFont,     xmlElement, mode);
@@ -303,11 +297,11 @@
                 tempRadarViewable->second.second->setLeft((pos.x + 1.0f + tempRadarViewable->second.first->getWidth()) * 0.5f);
                 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();
+        }
+
     }
 
 }
@@ -397,6 +391,14 @@
     }
 }
 
+// void HUDRadar::changedOwner() {
+//     SUPER(HUDRadar, changedOwner);
+//
+//     this->owner_ = orxonox_cast<Pawn*>(this->getOwner());
+//     assert(this->radarObjects_.size()==0);
+//     this->gatherObjects();
+// }
+
 // 	void updateActiveObjectList(map activeObjectList_){}
 //
 // 	void HUDNavigation::objectChanged(RadarViewable* viewable){}

Modified: code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h
===================================================================
--- code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h	2010-05-10 15:02:26 UTC (rev 6896)
+++ code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h	2010-05-11 12:56:32 UTC (rev 6897)
@@ -32,6 +32,7 @@
 #include <utility>
 #include <map>
 #include "overlays/OverlaysPrereqs.h"
+#include "interfaces/RadarViewable.h"
 
 #include "interfaces/RadarListener.h"
 #include "util/OgreForwardRefs.h"
@@ -56,6 +57,7 @@
     virtual void objectChanged(RadarViewable* viewable) {}
     inline float getRadarSensitivity() const {return 1.0f;}
     inline void radarTick(float dt) {}
+//     virtual void changedOwner();
 
 
 private:
@@ -110,6 +112,10 @@
     typedef std::map<RadarViewable*, std::pair<Ogre::PanelOverlayElement*, Ogre::TextAreaOverlayElement*> > activeObjectListType;
     activeObjectListType activeObjectList_;
     activeObjectListType::iterator tempRadarViewable;
+    
+    typedef std::set<RadarViewable*> respawnObjectSetType;
+    respawnObjectSetType respawnObjectSet_;
+    respawnObjectSetType::iterator respawnObjectSetIt_;
 
     std::string fontName_;
     float textSize_;

Modified: code/branches/hudelements/src/modules/overlays/hud/HUDRadar.cc
===================================================================
--- code/branches/hudelements/src/modules/overlays/hud/HUDRadar.cc	2010-05-10 15:02:26 UTC (rev 6896)
+++ code/branches/hudelements/src/modules/overlays/hud/HUDRadar.cc	2010-05-11 12:56:32 UTC (rev 6897)
@@ -187,10 +187,10 @@
 
     void HUDRadar::changedOwner()
     {
-        SUPER(HUDRadar, changedOwner);
+    SUPER(HUDRadar, changedOwner);
 
-        this->owner_ = orxonox_cast<Pawn*>(this->getOwner());
-        assert(this->radarObjects_.size()==0);
-        this->gatherObjects();
-    }
+    this->owner_ = orxonox_cast<Pawn*>(this->getOwner());
+    assert(this->radarObjects_.size()==0);
+    this->gatherObjects();
 }
+}




More information about the Orxonox-commit mailing list