[Orxonox-commit 5153] r9818 - in code/branches/radarDreiD: data/gui/scripts data/overlays src/modules/overlays/hud

wroennin at orxonox.net wroennin at orxonox.net
Mon Nov 25 16:01:10 CET 2013


Author: wroennin
Date: 2013-11-25 16:01:10 +0100 (Mon, 25 Nov 2013)
New Revision: 9818

Modified:
   code/branches/radarDreiD/data/gui/scripts/MiscConfigMenu.lua
   code/branches/radarDreiD/data/overlays/HUDTemplates3.oxo
   code/branches/radarDreiD/src/modules/overlays/hud/HUDNavigation.cc
   code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.cc
   code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.h
Log:
HUDRadar: Added various XML ports, added changing between different BackgroundMaterials; MiscConfigMenu.lua: added point to change between 3D/2D; HUDTemplates3: updated parameters for new ports

Modified: code/branches/radarDreiD/data/gui/scripts/MiscConfigMenu.lua
===================================================================
--- code/branches/radarDreiD/data/gui/scripts/MiscConfigMenu.lua	2013-11-25 14:57:49 UTC (rev 9817)
+++ code/branches/radarDreiD/data/gui/scripts/MiscConfigMenu.lua	2013-11-25 15:01:10 UTC (rev 9818)
@@ -37,6 +37,7 @@
     table.insert(P.commandList, "Core bDevMode_")
     table.insert(P.commandList, "HUDNavigation MarkerLimit_")
     table.insert(P.commandList, "HUDNavigation showDistance")
+    table.insert(P.commandList, "HUDRadar RadarMode_")
 
     P.nameList = {}
     table.insert(P.nameList, "Mouse sensitivity")
@@ -59,6 +60,7 @@
     table.insert(P.nameList, "Developer's Mode")
     table.insert(P.nameList, "Marker Limit")
     table.insert(P.nameList, "Show Distance next to cursor")
+    table.insert(P.nameList, "Set Radar on 3D mode")
 
     P.linesList = {}
 

Modified: code/branches/radarDreiD/data/overlays/HUDTemplates3.oxo
===================================================================
--- code/branches/radarDreiD/data/overlays/HUDTemplates3.oxo	2013-11-25 14:57:49 UTC (rev 9817)
+++ code/branches/radarDreiD/data/overlays/HUDTemplates3.oxo	2013-11-25 15:01:10 UTC (rev 9818)
@@ -110,7 +110,7 @@
 <!--
     <HUDRadar
      name          = "Radar"
-     backgroundtex = "radar.png"
+     background    = "Orxonox/Radar"
      correctaspect = true
      size          = "0.17, 0.17"
      position      = "1.0, 1.0"
@@ -121,10 +121,14 @@
      maximumDotSize      = 0.1
     />
     -->
-    
+   
+   
+  
     <HUDRadar
      name          = "Radar"
-     backgroundtex = "radar3D_2_0.png"
+     background    = "Orxonox/Radar3D"
+     material2D    = "Orxonox/Radar"
+     material3D    = "Orxonox/Radar3D"
      correctaspect = true
      size          = "0.17, 0.17"
      position      = "1.0, 1.0"
@@ -132,9 +136,12 @@
      rotation      = 0
      sensitivity   = 1.0
      halfDotSizeDistance = 3000
-     maximumDotSize      = 0.1
+     maximumDotSize = 0.1
+     maximumDotSize3D      = 0.07
     />
 
+
+
     <HUDTimer
      name     = "Timer"
      position = "0.5, 0.85"

Modified: code/branches/radarDreiD/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/branches/radarDreiD/src/modules/overlays/hud/HUDNavigation.cc	2013-11-25 14:57:49 UTC (rev 9817)
+++ code/branches/radarDreiD/src/modules/overlays/hud/HUDNavigation.cc	2013-11-25 15:01:10 UTC (rev 9818)
@@ -73,8 +73,8 @@
     HUDNavigation::HUDNavigation(Context* context) :
         OrxonoxOverlay(context)
     {
-        RegisterObject(HUDNavigation)
-;        this->setConfigValues();
+        RegisterObject(HUDNavigation);
+        this->setConfigValues();
 
         // Set default values
         this->setFont("Monofur");

Modified: code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.cc
===================================================================
--- code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.cc	2013-11-25 14:57:49 UTC (rev 9817)
+++ code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.cc	2013-11-25 15:01:10 UTC (rev 9818)
@@ -41,6 +41,7 @@
 #include "worldentities/ControllableEntity.h"
 #include "Scene.h"
 #include "Radar.h"
+#include "core/config/ConfigValueIncludes.h"
 
 namespace orxonox
 {
@@ -50,6 +51,7 @@
         : OrxonoxOverlay(context)
     {
         RegisterObject(HUDRadar);
+        this->setConfigValues();
 
         this->marker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
             .createOverlayElement("Panel", "HUDRadar_marker_" + getUniqueNumberString()));
@@ -60,6 +62,7 @@
         this->setRadarSensitivity(1.0f);
         this->setHalfDotSizeDistance(3000.0f);
         this->setMaximumDotSize(0.1f);
+        this->setMaximumDotSize3D(0.07f);
 
         this->shapeMaterials_[RadarViewable::Dot]      = "RadarDot.png";
         this->shapeMaterials_[RadarViewable::Triangle] = "RadarTriangle.png";
@@ -81,6 +84,13 @@
         }
     }
 
+
+
+    void HUDRadar::setConfigValues()
+       {
+           SetConfigValue(RadarMode_, true);
+       }
+
     void HUDRadar::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
         SUPER(HUDRadar, XMLPort, xmlelement, mode);
@@ -88,6 +98,9 @@
         XMLPortParam(HUDRadar, "sensitivity", setRadarSensitivity, getRadarSensitivity, xmlelement, mode);
         XMLPortParam(HUDRadar, "halfDotSizeDistance", setHalfDotSizeDistance, getHalfDotSizeDistance, xmlelement, mode);
         XMLPortParam(HUDRadar, "maximumDotSize", setMaximumDotSize, getMaximumDotSize, xmlelement, mode);
+        XMLPortParam(HUDRadar, "maximumDotSize3D", setMaximumDotSize3D, getMaximumDotSize3D, xmlelement, mode);
+        XMLPortParam(HUDRadar, "Material2D", set2DMaterial, get2DMaterial, xmlelement, mode);
+        XMLPortParam(HUDRadar, "Material3D", set3DMaterial, get3DMaterial, xmlelement, mode);
     }
 
     void HUDRadar::addObject(RadarViewable* object)
@@ -152,6 +165,20 @@
 
         // update the distances for all objects
         std::map<RadarViewable*,Ogre::PanelOverlayElement*>::iterator it;
+
+
+        if(RadarMode_)
+        {
+        	this->setBackgroundMaterial(material3D_);
+
+
+
+        }
+        else
+        	this->setBackgroundMaterial(material2D_);
+
+
+
         for( it = this->radarObjects_.begin(); it != this->radarObjects_.end(); ++it )
         {
             // Make sure the object really is a WorldEntity
@@ -165,25 +192,31 @@
             // set size to fit distance...
             float distance = (wePointer->getWorldPosition() - this->owner_->getPosition()).length();
             // calculate the size with 1/distance dependency for simplicity (instead of exp(-distance * lambda)
-            float size = maximumDotSize_ * halfDotSizeDistance_ / (halfDotSizeDistance_ + distance) * it->first->getRadarObjectScale();
 
-
+            float size;
+            if(RadarMode_)
+            	size = maximumDotSize3D_ * halfDotSizeDistance_ / (halfDotSizeDistance_ + distance) * it->first->getRadarObjectScale();
+            else
+            	size = maximumDotSize_ * halfDotSizeDistance_ / (halfDotSizeDistance_ + distance) * it->first->getRadarObjectScale();
             it->second->setDimensions(size, size);
 
             // calc position on radar...
-            //Vector2 coord = get2DViewcoordinates(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition());
-            Vector2 coord = get3DProjection(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition(), 0.6435011, detectionLimit_);
+            Vector2 coord;
+            if(RadarMode_)
+            {
+            	coord = get3DProjection(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition(), 0.6435011, detectionLimit_);
 
-            // set zOrder on screen
-            bool overXZPlain = isObjectHigherThanShipOnMap(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition(), 0.6435011);
+            	// set zOrder on screen
+            	bool overXZPlain = isObjectHigherThanShipOnMap(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition(), 0.6435011);
 
-            if(overXZPlain == false && (it->second->getZOrder() >  100 * this->overlay_->getZOrder())) // it appears that zOrder of attached Overlayelements is 100 times the zOrder of the Overlay
-            	it->second->_notifyZOrder(this->overlay_->getZOrder() * 100 - 1);
-            if(overXZPlain == true && (it->second->getZOrder() <= 100 * this->overlay_->getZOrder()))
-            	it->second->_notifyZOrder(this->overlay_->getZOrder() * 100 + 1);
+            	if(overXZPlain == false && (it->second->getZOrder() >  100 * this->overlay_->getZOrder())) // it appears that zOrder of attached Overlayelements is 100 times the zOrder of the Overlay
+            		it->second->_notifyZOrder(this->overlay_->getZOrder() * 100 - 1);
+            	if(overXZPlain == true && (it->second->getZOrder() <= 100 * this->overlay_->getZOrder()))
+            		it->second->_notifyZOrder(this->overlay_->getZOrder() * 100 + 1);
+            }
+            else
+            	coord = get2DViewcoordinates(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition());
 
-
-
             coord *= math::pi / 3.5f; // small adjustment to make it fit the texture
             it->second->setPosition((1.0f + coord.x - size) * 0.5f, (1.0f - coord.y - size) * 0.5f);
 

Modified: code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.h
===================================================================
--- code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.h	2013-11-25 14:57:49 UTC (rev 9817)
+++ code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.h	2013-11-25 15:01:10 UTC (rev 9818)
@@ -34,6 +34,7 @@
 
 #include <map>
 #include <vector>
+#include <string>
 
 #include "util/OgreForwardRefs.h"
 #include "interfaces/RadarListener.h"
@@ -50,6 +51,7 @@
 
         virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
         virtual void changedOwner();
+        void setConfigValues();
 
     private:
         // XML accessors
@@ -64,6 +66,15 @@
         float getMaximumDotSize() const { return this->maximumDotSize_; }
         void setMaximumDotSize(float size) { this->maximumDotSize_ = size; }
 
+        float getMaximumDotSize3D() const { return this->maximumDotSize3D_; }
+        void setMaximumDotSize3D(float size) { this->maximumDotSize3D_ = size;}
+
+        std::string get2DMaterial() const {return this->material2D_; }
+        void set2DMaterial(std::string material2D) { this->material2D_ = material2D; }
+
+        std::string get3DMaterial() const {return this->material3D_; }
+        void set3DMaterial(std::string material3D) { this->material3D_ = material3D; }
+
         float getRadarSensitivity() const { return this->sensitivity_; }
         // used also by RadarListener interface!
         void setRadarSensitivity(float sensitivity) { this->sensitivity_ = sensitivity; }
@@ -84,9 +95,15 @@
         std::map<RadarViewable*, Ogre::PanelOverlayElement*> radarObjects_;
         Ogre::PanelOverlayElement* marker_;
 
+        bool RadarMode_; // Determines, if Radar runs in 3D or 2D Mode
+
         float halfDotSizeDistance_;
         float maximumDotSize_;
+        float maximumDotSize3D_;
 
+        std::string material2D_;
+        std::string material3D_;
+
         float sensitivity_;
         float detectionLimit_;
         ControllableEntity* owner_;




More information about the Orxonox-commit mailing list