[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