[Orxonox-commit 2133] r6849 - code/branches/hudelements/src/modules/overlays/hud

scurcio at orxonox.net scurcio at orxonox.net
Mon May 3 17:03:06 CEST 2010


Author: scurcio
Date: 2010-05-03 17:03:05 +0200 (Mon, 03 May 2010)
New Revision: 6849

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:
update hudnavigation /addObject, removeObject



Modified: code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc	2010-05-03 14:57:54 UTC (rev 6848)
+++ code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc	2010-05-03 15:03:05 UTC (rev 6849)
@@ -29,13 +29,10 @@
 #include "HUDNavigation.h"
 
 #include <string>
-#include <vector>
-#include <map>
 #include <OgreCamera.h>
 #include <OgreOverlayManager.h>
 #include <OgreTextAreaOverlayElement.h>
 #include <OgrePanelOverlayElement.h>
-
 #include "util/Math.h"
 #include "util/Convert.h"
 #include "core/CoreIncludes.h"
@@ -46,6 +43,7 @@
 #include "graphics/Camera.h"
 #include "controllers/HumanController.h"
 #include "worldentities/pawns/Pawn.h"
+#include "worldentities/WorldEntity.h"
 
 namespace orxonox
 {
@@ -138,8 +136,6 @@
 
     void HUDNavigation::tick(float dt)
     {
-
-	
         SUPER(HUDNavigation, tick, dt);
 
         // Get radar
@@ -290,17 +286,41 @@
             navText_->setCharHeight(navText_->getCharHeight() * yScale);
     }
     
-//     map <WorldEntity*, pair <Ogre::PanelOverlayElement*, Ogre::TextAreaOverlayElement*> > ActiveObjectList;
+    void HUDNavigation::addObject(RadarViewable* object)
+    {
+        if (object == dynamic_cast<RadarViewable*>(this->getOwner()))
+            return;
+	
+	assert(object);
+	  
+        // Make sure the object hasn't been added yet
+        assert( this->activeObjectList_.find(object) == this->activeObjectList_.end() );
+
+        // Create everything needed to display the object on the radar and add it to the map
+	
+	 // create nav marker
+        Ogre::PanelOverlayElement* panel = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
+            .createOverlayElement("Panel", "HUDNavigation_navMarker_" + getUniqueNumberString()));
+	    
+        panel->setMaterialName("Orxonox/NavArrows");
+	 
+        Ogre::TextAreaOverlayElement* text = static_cast<Ogre::TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton()
+             .createOverlayElement("TextArea", "HUDNavigation_navText_" + getUniqueNumberString()));
+	
+	activeObjectList_[object] = std::make_pair (panel, text) ;	
+	activeObjectList_[object].first->show();
+	activeObjectList_[object].second->show();
+	}
     
-//     void updateActiveObjectMap(){
-//       --> iteration durch die betsehende map über alle keys (Worldentity*)
-// 	     --> check: 'existiert noch' 'sizeChanged' 'angleChanged' 'positionChanged'
-// 		 --> update des aktuellen Objects (Panel & Text) 
-// 		 --> lücke schliessen in der map (aufrücken nach links)
-// 	 --> neue objekte suchen
-// 		 -- map.add neue objekte hinzufügen (pair <panel, text> einfügen.
-//     }	
-    
+    	void HUDNavigation::removeObject(RadarViewable* viewable){
+	  assert(activeObjectList_.find(viewable)!=activeObjectList_.end());
+	  activeObjectList_.erase(viewable);
+	}
+// 	
+//         void HUDNavigation::objectChanged(RadarViewable* viewable){}
+//         float HUDNavigation::getRadarSensitivity(){}
+//         void HUDNavigation::radarTick(float dt){}
+// 	
 
 
 }

Modified: code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h
===================================================================
--- code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h	2010-05-03 14:57:54 UTC (rev 6848)
+++ code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h	2010-05-03 15:03:05 UTC (rev 6849)
@@ -29,8 +29,11 @@
 #ifndef _HUDNavigation_H__
 #define _HUDNavigation_H__
 
+#include <utility>
+#include <map>
 #include "overlays/OverlaysPrereqs.h"
 
+#include "interfaces/RadarListener.h"
 #include "util/OgreForwardRefs.h"
 #include "tools/interfaces/Tickable.h"
 #include "overlays/OrxonoxOverlay.h"
@@ -40,8 +43,7 @@
 
 namespace orxonox
 {
-class WorldEntity;
-    class _OverlaysExport HUDNavigation : public OrxonoxOverlay, public Tickable
+    class _OverlaysExport HUDNavigation : public OrxonoxOverlay, public Tickable, public RadarListener
     {
     public:
         HUDNavigation(BaseObject* creator);
@@ -49,9 +51,12 @@
 
         virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
         virtual void tick(float dt);
-	
-	virtual map <WorldEntity*, pair <Ogre::PanelOverlayElement*, Ogre::TextAreaOverlayElement*> > ActiveObjectList;
-	
+	virtual void addObject(RadarViewable* object);
+	 
+	virtual void removeObject(RadarViewable* viewable);
+         virtual void objectChanged(RadarViewable* viewable){}
+         inline float getRadarSensitivity() const{}
+         inline void radarTick(float dt) {}
 
     private:
 
@@ -62,7 +67,7 @@
 	
 
         // XMLPort accessors
-        void setNavMarkerSize(float size) { this->navMarkerSize_ = size; this->sizeChanged(); }
+        void setNavMarkerSize(float size) { this->navMarkerSize_ = size; this->sizeChanged(); } 
         float getNavMarkerSize() const    { return this->navMarkerSize_; }
 
 /*
@@ -93,8 +98,10 @@
         Ogre::TextAreaOverlayElement* navText_;     //!< Text overlay to display the target distance
         bool wasOutOfView_;                         //!< Performance booster variable: setMaterial is not cheap
 	
+	std::map<RadarViewable*, std::pair<Ogre::PanelOverlayElement*, Ogre::TextAreaOverlayElement*> > activeObjectList_;
 	
     };
+    
 }
 
 #endif /* _HUDNavigation_H__ */

Modified: code/branches/hudelements/src/modules/overlays/hud/HUDRadar.cc
===================================================================
--- code/branches/hudelements/src/modules/overlays/hud/HUDRadar.cc	2010-05-03 14:57:54 UTC (rev 6848)
+++ code/branches/hudelements/src/modules/overlays/hud/HUDRadar.cc	2010-05-03 15:03:05 UTC (rev 6849)
@@ -44,7 +44,7 @@
 
 namespace orxonox
 {
-    CreateFactory(HUDRadar);
+    CreateFactory(HUDRadar); 
 
     HUDRadar::HUDRadar(BaseObject* creator)
         : OrxonoxOverlay(creator)




More information about the Orxonox-commit mailing list