[Orxonox-commit 2158] r6874 - code/branches/hudelements/src/modules/overlays/hud

sfluecki at orxonox.net sfluecki at orxonox.net
Mon May 10 14:55:46 CEST 2010


Author: sfluecki
Date: 2010-05-10 14:55:46 +0200 (Mon, 10 May 2010)
New Revision: 6874

Modified:
   code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc
   code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h
Log:
blub

Modified: code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc	2010-05-10 12:21:36 UTC (rev 6873)
+++ code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.cc	2010-05-10 12:55:46 UTC (rev 6874)
@@ -48,118 +48,118 @@
 
 namespace orxonox
 {
-    CreateFactory(HUDNavigation);
+CreateFactory(HUDNavigation);
 
-    HUDNavigation::HUDNavigation(BaseObject* creator)
+HUDNavigation::HUDNavigation(BaseObject* creator)
         : OrxonoxOverlay(creator)
-    {
-        RegisterObject(HUDNavigation);
-	
+{
+    RegisterObject(HUDNavigation);
+
 //         // create nav text
 //         navText_ = static_cast<Ogre::TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton()
 //             .createOverlayElement("TextArea", "HUDNavigation_navText_" + getUniqueNumberString()));
-// 
+//
 //         // create nav marker
 //         navMarker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
 //             .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);
+
+
+    setFont("Monofur");
+    setTextSize(0.05f);
+    setNavMarkerSize(0.05f);
 //         setAimMarkerSize(0.04f);
-    }
+}
 
-    HUDNavigation::~HUDNavigation()
+HUDNavigation::~HUDNavigation()
+{
+
+    if (this->isInitialized())
     {
-      
-        if (this->isInitialized())
+        if (!activeObjectList_.empty())
         {
-	  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);
+            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_);
-	    }
-	  }
+            }
         }
     }
+}
 
-    void HUDNavigation::XMLPort(Element& xmlElement, XMLPort::Mode mode)
-    {
-        SUPER(HUDNavigation, XMLPort, xmlElement, mode);
+void HUDNavigation::XMLPort(Element& xmlElement, XMLPort::Mode mode)
+{
+    SUPER(HUDNavigation, XMLPort, xmlElement, mode);
 
-        XMLPortParam(HUDNavigation, "font",     setFont,     getFont,     xmlElement, mode);
-        XMLPortParam(HUDNavigation, "textSize", setTextSize, getTextSize, xmlElement, mode);
-        XMLPortParam(HUDNavigation, "navMarkerSize", setNavMarkerSize, getNavMarkerSize, xmlElement, mode);
+    XMLPortParam(HUDNavigation, "font",     setFont,     getFont,     xmlElement, mode);
+    XMLPortParam(HUDNavigation, "textSize", setTextSize, getTextSize, xmlElement, mode);
+    XMLPortParam(HUDNavigation, "navMarkerSize", setNavMarkerSize, getNavMarkerSize, xmlElement, mode);
 //        XMLPortParam(HUDNavigation, "aimMarkerSize", setAimMarkerSize, getAimMarkerSize, xmlElement, mode);
-    }
+}
 
-    void HUDNavigation::setFont(const std::string& font)
+void HUDNavigation::setFont(const std::string& font)
+{
+    fontName_ = font;
+    if (!activeObjectList_.empty())
     {
-        fontName_ = font;
-	if(!activeObjectList_.empty()) 
-	{
-	  for(tempRadarViewable = activeObjectList_.begin(); tempRadarViewable!=activeObjectList_.end(); ++tempRadarViewable)
-	   {
-	      if (tempRadarViewable->second.second && !fontName_.empty())
-		tempRadarViewable->second.second->setFontName(fontName_);
-	   }
-	}
+        for (tempRadarViewable = activeObjectList_.begin(); tempRadarViewable!=activeObjectList_.end(); ++tempRadarViewable)
+        {
+            if (tempRadarViewable->second.second && !fontName_.empty())
+                tempRadarViewable->second.second->setFontName(fontName_);
+        }
     }
+}
 
-    const std::string& HUDNavigation::getFont() const
-    {
-        return fontName_;
-    }
+const std::string& HUDNavigation::getFont() const
+{
+    return fontName_;
+}
 
-    void HUDNavigation::setTextSize(float size)
+void HUDNavigation::setTextSize(float size)
+{
+    textSize_ = size;
+    if (!activeObjectList_.empty())
     {
-      textSize_ = size;
-      if(!activeObjectList_.empty()) 
-	{
-	  for(tempRadarViewable = activeObjectList_.begin(); tempRadarViewable!=activeObjectList_.end(); ++tempRadarViewable)
-	    {
-	      if (tempRadarViewable->second.second && size >= 0.0f)
-		tempRadarViewable->second.second->setCharHeight(size);
-	    }
-	}   
+        for (tempRadarViewable = activeObjectList_.begin(); tempRadarViewable!=activeObjectList_.end(); ++tempRadarViewable)
+        {
+            if (tempRadarViewable->second.second && size >= 0.0f)
+                tempRadarViewable->second.second->setCharHeight(size);
+        }
     }
+}
 
-    float HUDNavigation::getTextSize() const
-    {
-      return textSize_;
-    }
+float HUDNavigation::getTextSize() const
+{
+    return textSize_;
+}
 
-    void HUDNavigation::tick(float dt)
-    {
-        SUPER(HUDNavigation, tick, dt);
-	
+void HUDNavigation::tick(float dt)
+{
+    SUPER(HUDNavigation, tick, dt);
+
 // 	updateActiveObjectList(activeObjectList_);
 
-        // Get radar
+    // Get radar
 //         Radar* radar = this->getOwner()->getScene()->getRadar();
-// 
+//
 //         if (!radar->getFocus())
 //         {
 //             this->overlay_->hide();
@@ -170,214 +170,215 @@
 //             this->overlay_->show();
 //         }
 
-        // set text
+    // set text
 //         int dist = static_cast<int>(getDist2Focus());
 //         navText_->setCaption(multi_cast<std::string>(dist));
 //         float textLength = multi_cast<std::string>(dist).size() * navText_->getCharHeight() * 0.3f;
 
-      if(!activeObjectList_.empty()) {
-      for(tempRadarViewable = activeObjectList_.begin(); tempRadarViewable!=activeObjectList_.end(); ++tempRadarViewable)
-	{
-	  COUT(0) << "check 174" << std::endl;
-	
-	//get Distance to HumanController and save it in the TextAreaOverlayElement.
-	int dist = (int)(tempRadarViewable->first->getRVWorldPosition() - HumanController::getLocalControllerEntityAsPawn()->getWorldPosition()).length();
-	tempRadarViewable->second.second->setCaption(multi_cast<std::string>(dist));
-	float textLength = multi_cast<std::string>(dist).size() * tempRadarViewable->second.second->getCharHeight() * 0.3f;
-	 
-	 COUT(0) << "check 181" << std::endl;
-      
-	orxonox::Camera* cam = CameraManager::getInstance().getActiveCamera();
-        if (!cam)
-            return;
-        const Matrix4& transform = cam->getOgreCamera()->getProjectionMatrix() * cam->getOgreCamera()->getViewMatrix();
-        // transform to screen coordinates
-        Vector3 pos = transform * tempRadarViewable->first->getRVWorldPosition();
-
-	 COUT(0) << "check 190" << std::endl;
-	 
-        bool outOfView;
-        if (pos.z > 1.0)
+    if (!activeObjectList_.empty()) {
+        for (tempRadarViewable = activeObjectList_.begin(); tempRadarViewable!=activeObjectList_.end(); ++tempRadarViewable)
         {
-            // z > 1.0 means that the object is behind the camera
-            outOfView = true;
-            // we have to switch all coordinates (if you don't know why,
-            // try linear algebra lectures, because I can't explain..)
-            pos.x = -pos.x;
-            pos.y = -pos.y;
-        }
-        else
-            outOfView = pos.x < -1.0 || pos.x > 1.0 || pos.y < -1.0 || pos.y > 1.0;
+            COUT(0) << "check 174" << std::endl;
 
-        if (outOfView)
-        {
-            // object is not in view
-//            aimMarker_->hide();
+            //get Distance to HumanController and save it in the TextAreaOverlayElement.
+            int dist = (int)(tempRadarViewable->first->getRVWorldPosition() - HumanController::getLocalControllerEntityAsPawn()->getWorldPosition()).length();
+            tempRadarViewable->second.second->setCaption(multi_cast<std::string>(dist));
+            float textLength = multi_cast<std::string>(dist).size() * tempRadarViewable->second.second->getCharHeight() * 0.3f;
 
-            if (!wasOutOfView_)
+            COUT(0) << "check 181" << std::endl;
+
+            orxonox::Camera* cam = CameraManager::getInstance().getActiveCamera();
+            if (!cam)
+                return;
+            const Matrix4& transform = cam->getOgreCamera()->getProjectionMatrix() * cam->getOgreCamera()->getViewMatrix();
+            // transform to screen coordinates
+            Vector3 pos = transform * tempRadarViewable->first->getRVWorldPosition();
+
+            COUT(0) << "check 190" << std::endl;
+
+            bool outOfView;
+            if (pos.z > 1.0)
             {
-                tempRadarViewable->second.first->setMaterialName("Orxonox/NavArrows");
-                wasOutOfView_ = true;
+                // z > 1.0 means that the object is behind the camera
+                outOfView = true;
+                // we have to switch all coordinates (if you don't know why,
+                // try linear algebra lectures, because I can't explain..)
+                pos.x = -pos.x;
+                pos.y = -pos.y;
             }
-	    
-	     COUT(0) << "check 174" << std::endl;
+            else
+                outOfView = pos.x < -1.0 || pos.x > 1.0 || pos.y < -1.0 || pos.y > 1.0;
 
-            if (pos.x < pos.y)
+            if (outOfView)
             {
-                if (pos.y > -pos.x)
+                // object is not in view
+//            aimMarker_->hide();
+
+                if (!wasOutOfView_)
                 {
-                    // up
-                    float position = pos.x / pos.y + 1.0f;
-                    tempRadarViewable->second.first->setPosition((position - tempRadarViewable->second.first->getWidth()) * 0.5f, 0.0f);
-                    tempRadarViewable->second.first->setUV(0.5f, 0.0f, 1.0f, 0.5f);
-                    tempRadarViewable->second.second->setLeft((position - textLength) * 0.5f);
-                    tempRadarViewable->second.second->setTop(tempRadarViewable->second.first->getHeight());
+                    tempRadarViewable->second.first->setMaterialName("Orxonox/NavArrows");
+                    wasOutOfView_ = true;
                 }
+
+                COUT(0) << "check 174" << std::endl;
+
+                if (pos.x < pos.y)
+                {
+                    if (pos.y > -pos.x)
+                    {
+                        // up
+                        float position = pos.x / pos.y + 1.0f;
+                        tempRadarViewable->second.first->setPosition((position - tempRadarViewable->second.first->getWidth()) * 0.5f, 0.0f);
+                        tempRadarViewable->second.first->setUV(0.5f, 0.0f, 1.0f, 0.5f);
+                        tempRadarViewable->second.second->setLeft((position - textLength) * 0.5f);
+                        tempRadarViewable->second.second->setTop(tempRadarViewable->second.first->getHeight());
+                    }
+                    else
+                    {
+                        // left
+                        float position = pos.y / pos.x + 1.0f;
+                        tempRadarViewable->second.first->setPosition(0.0f, (position - tempRadarViewable->second.first->getWidth()) * 0.5f);
+                        tempRadarViewable->second.first->setUV(0.0f, 0.0f, 0.5f, 0.5f);
+                        tempRadarViewable->second.second->setLeft(tempRadarViewable->second.first->getWidth() + 0.01f);
+                        tempRadarViewable->second.second->setTop((position - tempRadarViewable->second.second->getCharHeight()) * 0.5f);
+                    }
+                }
                 else
                 {
-                    // left
-                    float position = pos.y / pos.x + 1.0f;
-                    tempRadarViewable->second.first->setPosition(0.0f, (position - tempRadarViewable->second.first->getWidth()) * 0.5f);
-                    tempRadarViewable->second.first->setUV(0.0f, 0.0f, 0.5f, 0.5f);
-                    tempRadarViewable->second.second->setLeft(tempRadarViewable->second.first->getWidth() + 0.01f);
-                    tempRadarViewable->second.second->setTop((position - tempRadarViewable->second.second->getCharHeight()) * 0.5f);
+                    COUT(0) << "check 241" << std::endl;
+                    if (pos.y < -pos.x)
+                    {
+                        // down
+                        float position = -pos.x / pos.y + 1.0f;
+                        tempRadarViewable->second.first->setPosition((position - tempRadarViewable->second.first->getWidth()) * 0.5f, 1.0f - navMarker_->getHeight());
+                        tempRadarViewable->second.first->setUV(0.0f, 0.5f, 0.5f, 1.0f);
+                        tempRadarViewable->second.second->setLeft((position - textLength) * 0.5f);
+                        tempRadarViewable->second.second->setTop(1.0f - tempRadarViewable->second.first->getHeight() - tempRadarViewable->second.second->getCharHeight());
+                    }
+                    else
+                    {
+                        // right
+                        float position = -pos.y / pos.x + 1.0f;
+                        tempRadarViewable->second.first->setPosition(1.0f - tempRadarViewable->second.first->getWidth(), (position - tempRadarViewable->second.first->getHeight()) * 0.5f);
+                        tempRadarViewable->second.first->setUV(0.5f, 0.5f, 1.0f, 1.0f);
+                        tempRadarViewable->second.second->setLeft(1.0f - tempRadarViewable->second.first->getWidth() - textLength - 0.01f);
+                        tempRadarViewable->second.second->setTop((position - tempRadarViewable->second.second->getCharHeight()) * 0.5f);
+                    }
                 }
             }
             else
             {
-	       COUT(0) << "check 241" << std::endl;
-                if (pos.y < -pos.x)
+                COUT(0) << "check 264" << std::endl;
+
+                // object is in view
+                /*
+                            Vector3 aimpos = transform * getPredictedPosition(SpaceShip::getLocalShip()->getPosition(),
+                                    Projectile::getSpeed(), Radar::getInstance().getFocus()->getRVWorldPosition(), Radar::getInstance().getFocus()->getRVOrientedVelocity());
+                */
+                if (wasOutOfView_)
                 {
-                    // down
-                    float position = -pos.x / pos.y + 1.0f;
-                    tempRadarViewable->second.first->setPosition((position - tempRadarViewable->second.first->getWidth()) * 0.5f, 1.0f - navMarker_->getHeight());
-                    tempRadarViewable->second.first->setUV(0.0f, 0.5f, 0.5f, 1.0f);
-                    tempRadarViewable->second.second->setLeft((position - textLength) * 0.5f);
-                    tempRadarViewable->second.second->setTop(1.0f - tempRadarViewable->second.first->getHeight() - tempRadarViewable->second.second->getCharHeight());
+                    tempRadarViewable->second.first->setMaterialName("Orxonox/NavTDC");
+                    wasOutOfView_ = false;
                 }
-                else
-                {
-                    // right
-                    float position = -pos.y / pos.x + 1.0f;
-                    tempRadarViewable->second.first->setPosition(1.0f - tempRadarViewable->second.first->getWidth(), (position - tempRadarViewable->second.first->getHeight()) * 0.5f);
-                    tempRadarViewable->second.first->setUV(0.5f, 0.5f, 1.0f, 1.0f);
-                    tempRadarViewable->second.second->setLeft(1.0f - tempRadarViewable->second.first->getWidth() - textLength - 0.01f);
-                    tempRadarViewable->second.second->setTop((position - tempRadarViewable->second.second->getCharHeight()) * 0.5f);
-                }
-            }
-        }
-        else
-        {
-	   COUT(0) << "check 264" << std::endl;
-	  
-            // object is in view
-/*
-            Vector3 aimpos = transform * getPredictedPosition(SpaceShip::getLocalShip()->getPosition(),
-                    Projectile::getSpeed(), Radar::getInstance().getFocus()->getRVWorldPosition(), Radar::getInstance().getFocus()->getRVOrientedVelocity());
-*/
-            if (wasOutOfView_)
-            {
-                tempRadarViewable->second.first->setMaterialName("Orxonox/NavTDC");
-                wasOutOfView_ = false;
-            }
 
-            // object is in view
-            tempRadarViewable->second.first->setUV(0.0f, 0.0f, 1.0f, 1.0f);
-            tempRadarViewable->second.first->setLeft((pos.x + 1.0f - tempRadarViewable->second.first->getWidth()) * 0.5f);
-            tempRadarViewable->second.first->setTop((-pos.y + 1.0f - tempRadarViewable->second.first->getHeight()) * 0.5f);
+                // object is in view
+                tempRadarViewable->second.first->setUV(0.0f, 0.0f, 1.0f, 1.0f);
+                tempRadarViewable->second.first->setLeft((pos.x + 1.0f - tempRadarViewable->second.first->getWidth()) * 0.5f);
+                tempRadarViewable->second.first->setTop((-pos.y + 1.0f - tempRadarViewable->second.first->getHeight()) * 0.5f);
 
-/*
-            aimMarker_->show();
-            aimMarker_->setLeft((aimpos.x + 1.0f - aimMarker_->getWidth()) * 0.5f);
-            aimMarker_->setTop((-aimpos.y + 1.0f - aimMarker_->getHeight()) * 0.5f);
-*/
-            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);
+                /*
+                            aimMarker_->show();
+                            aimMarker_->setLeft((aimpos.x + 1.0f - aimMarker_->getWidth()) * 0.5f);
+                            aimMarker_->setTop((-aimpos.y + 1.0f - aimMarker_->getHeight()) * 0.5f);
+                */
+                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();
     }
-    }
     
-    
-    float HUDNavigation::getDist2Focus() const{
-      
-        Radar* radar = this->getOwner()->getScene()->getRadar();
-        if (radar->getFocus() && HumanController::getLocalControllerEntityAsPawn())
-            return (radar->getFocus()->getRVWorldPosition() - HumanController::getLocalControllerEntityAsPawn()->getWorldPosition()).length();
-        else
-            return 0;
-    }
+}
 
-    /**
-    @brief Overridden method of OrxonoxOverlay. Usually the entire overlay
-           scales with scale(). Here we obviously have to adjust this.
-    */
-    void HUDNavigation::sizeChanged(){
-            // use size to compensate for aspect ratio if enabled.
-	float xScale = this->getActualSize().x;
-	float yScale = this->getActualSize().y;
-	
-	 if(!activeObjectList_.empty()) 
-	{
-	  for(tempRadarViewable = activeObjectList_.begin(); tempRadarViewable!=activeObjectList_.end(); ++tempRadarViewable)
-	  {
 
-	     if (tempRadarViewable->second.first)
-	      tempRadarViewable->second.first->setDimensions(navMarkerSize_ * xScale, navMarkerSize_ * yScale);
+float HUDNavigation::getDist2Focus() const {
+
+    Radar* radar = this->getOwner()->getScene()->getRadar();
+    if (radar->getFocus() && HumanController::getLocalControllerEntityAsPawn())
+        return (radar->getFocus()->getRVWorldPosition() - HumanController::getLocalControllerEntityAsPawn()->getWorldPosition()).length();
+    else
+        return 0;
+}
+
+/**
+ at brief Overridden method of OrxonoxOverlay. Usually the entire overlay
+       scales with scale(). Here we obviously have to adjust this.
+*/
+void HUDNavigation::sizeChanged() {
+    // use size to compensate for aspect ratio if enabled.
+    float xScale = this->getActualSize().x;
+    float yScale = this->getActualSize().y;
+
+    if (!activeObjectList_.empty())
+    {
+        for (tempRadarViewable = activeObjectList_.begin(); tempRadarViewable!=activeObjectList_.end(); ++tempRadarViewable)
+        {
+
+            if (tempRadarViewable->second.first)
+                tempRadarViewable->second.first->setDimensions(navMarkerSize_ * xScale, navMarkerSize_ * yScale);
 //            if (this->aimMarker_)
 //            aimMarker_->setDimensions(aimMarkerSize_ * xScale, aimMarkerSize_ * yScale);
-	     if (tempRadarViewable->second.second)
-	      tempRadarViewable->second.second->setCharHeight(tempRadarViewable->second.second->getCharHeight() * yScale);
-	  }
-	}
+            if (tempRadarViewable->second.second)
+                tempRadarViewable->second.second->setCharHeight(tempRadarViewable->second.second->getCharHeight() * yScale);
+        }
     }
+}
+
+
+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()));
+
     
-    
-    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()));
-	     
-	int dist = (int)(object->getRVWorldPosition() - HumanController::getLocalControllerEntityAsPawn()->getWorldPosition()).length();
-	    activeObjectList_[object].second->setCaption(multi_cast<std::string>(dist));
-	
-	activeObjectList_[object] = std::make_pair (panel, text) ;	
-	activeObjectList_[object].first->show();
-	activeObjectList_[object].second->show();
+    activeObjectList_[object] = std::make_pair (panel, text) ;
+
 // 	background_->addChild(activeObjectList_[object].first);
 // 	background_->addChild(activeObjectList_[object].second);
-	COUT(0) << "check 357" << std::endl;
-    }
-    
-  void HUDNavigation::removeObject(RadarViewable* viewable){
-  	  assert(activeObjectList_.find(viewable)!=activeObjectList_.end());
-	  activeObjectList_.erase(viewable);
-  }
+    COUT(0) << "check 357" << std::endl;
+}
 
+void HUDNavigation::removeObject(RadarViewable* viewable) {
+    assert(activeObjectList_.find(viewable)!=activeObjectList_.end());
+    activeObjectList_.erase(viewable);
+}
+
 // 	void updateActiveObjectList(map activeObjectList_){}
-// 
+//
 // 	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-10 12:21:36 UTC (rev 6873)
+++ code/branches/hudelements/src/modules/overlays/hud/HUDNavigation.h	2010-05-10 12:55:46 UTC (rev 6874)
@@ -42,76 +42,80 @@
 
 namespace orxonox
 {
-    class _OverlaysExport HUDNavigation : public OrxonoxOverlay, public Tickable, public RadarListener
-    {
-    public:
-        HUDNavigation(BaseObject* creator);
-        virtual ~HUDNavigation();
+class _OverlaysExport HUDNavigation : public OrxonoxOverlay, public Tickable, public RadarListener
+{
+public:
+    HUDNavigation(BaseObject* creator);
+    virtual ~HUDNavigation();
 
-        virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
-        virtual void tick(float dt);
-	virtual void addObject(RadarViewable* object);
-	 
-	virtual void removeObject(RadarViewable* viewable);
-         virtual void objectChanged(RadarViewable* viewable){}
-         inline float getRadarSensitivity() const{}
-         inline void radarTick(float dt) {}
-	 
+    virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
+    virtual void tick(float dt);
+    virtual void addObject(RadarViewable* object);
 
-    private:
+    virtual void removeObject(RadarViewable* viewable);
+    virtual void objectChanged(RadarViewable* viewable) {}
+    inline float getRadarSensitivity() const {return 1.0f;}
+    inline void radarTick(float dt) {}
 
-	
-      
-	void sizeChanged();
-        void angleChanged() { }
-        void positionChanged() { }
-	
+
+private:
+
+
+
+    void sizeChanged();
+    void angleChanged() { }
+    void positionChanged() { }
+
 // 	void updateActiveObjectList(map activeObjectList_);
-	
-	
 
-        // XMLPort accessors
-        void setNavMarkerSize(float size) { navMarkerSize_ = size; 
-					    this->sizeChanged(); } 
-        float getNavMarkerSize() const    { return navMarkerSize_; }
 
-/*
-        void setAimMarkerSize(float size) { this->aimMarkerSize_ = size; this->sizeChanged(); }
-        float getAimMarkerSize() const    { return this->aimMarkerSize_; }
-*/
 
-        void setTextSize(float size);
-        float getTextSize() const;
+    // XMLPort accessors
+    void setNavMarkerSize(float size) {
+        navMarkerSize_ = size;
+        this->sizeChanged();
+    }
+    float getNavMarkerSize() const    {
+        return navMarkerSize_;
+    }
 
-        void setFont(const std::string& font);
-        const std::string& getFont() const;
+    /*
+            void setAimMarkerSize(float size) { this->aimMarkerSize_ = size; this->sizeChanged(); }
+            float getAimMarkerSize() const    { return this->aimMarkerSize_; }
+    */
 
-        void updateMarker();
-        void updateFocus();
-        float getDist2Focus() const;
-	void getSingleton();
+    void setTextSize(float size);
+    float getTextSize() const;
 
-    
-	void updateActiveObjectMap();
-	
-        Ogre::PanelOverlayElement* navMarker_;      //!< the panel used to show the arrow and the target marker
-        float navMarkerSize_;                       //!< One paramter size of the navigation marker
-/*
-        Ogre::PanelOverlayElement* aimMarker_;      //!< Panel used to show the aim Marker
-        float aimMarkerSize_;                       //!< One paramter size of the aim marker
-*/
-        Ogre::TextAreaOverlayElement* navText_;     //!< Text overlay to display the target distance
-        bool wasOutOfView_;                         //!< Performance booster variable: setMaterial is not cheap
-	
-	typedef std::map<RadarViewable*, std::pair<Ogre::PanelOverlayElement*, Ogre::TextAreaOverlayElement*> > activeObjectListType;
-	activeObjectListType activeObjectList_;
-	activeObjectListType::iterator tempRadarViewable;
-	
-	std::string fontName_;
-	float textSize_;
+    void setFont(const std::string& font);
+    const std::string& getFont() const;
 
-    };
-    
+    void updateMarker();
+    void updateFocus();
+    float getDist2Focus() const;
+    void getSingleton();
+
+
+    void updateActiveObjectMap();
+
+    Ogre::PanelOverlayElement* navMarker_;      //!< the panel used to show the arrow and the target marker
+    float navMarkerSize_;                       //!< One paramter size of the navigation marker
+    /*
+            Ogre::PanelOverlayElement* aimMarker_;      //!< Panel used to show the aim Marker
+            float aimMarkerSize_;                       //!< One paramter size of the aim marker
+    */
+    Ogre::TextAreaOverlayElement* navText_;     //!< Text overlay to display the target distance
+    bool wasOutOfView_;                         //!< Performance booster variable: setMaterial is not cheap
+
+    typedef std::map<RadarViewable*, std::pair<Ogre::PanelOverlayElement*, Ogre::TextAreaOverlayElement*> > activeObjectListType;
+    activeObjectListType activeObjectList_;
+    activeObjectListType::iterator tempRadarViewable;
+
+    std::string fontName_;
+    float textSize_;
+
+};
+
 }
 
 #endif /* _HUDNavigation_H__ */




More information about the Orxonox-commit mailing list