[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