[Orxonox-commit 4506] r9177 - code/branches/waypoints/src/modules/overlays/hud

scmoritz at orxonox.net scmoritz at orxonox.net
Fri May 11 16:20:51 CEST 2012


Author: scmoritz
Date: 2012-05-11 16:20:50 +0200 (Fri, 11 May 2012)
New Revision: 9177

Modified:
   code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.cc
   code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.h
Log:
3D arrow trial

Modified: code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.cc	2012-05-11 14:03:55 UTC (rev 9176)
+++ code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.cc	2012-05-11 14:20:50 UTC (rev 9177)
@@ -45,6 +45,8 @@
 #include "Scene.h"
 #include "Radar.h"
 #include "graphics/Camera.h"
+#include "graphics/Model.h"
+#include "worldentities/MovableEntity.h"
 #include "controllers/HumanController.h"
 #include "worldentities/pawns/Pawn.h"
 #include "worldentities/WorldEntity.h"
@@ -81,9 +83,20 @@
     this->setNavMarkerSize ( 0.05f );
     this->setDetectionLimit( 10000.0f ); 
 
-    Ogre::Entity* ent = this->getScene()->getSceneManager()->createEntity("Arrow3D", "Arrow3D.mesh");
-    this->add3DMesh(ent);
-    this->overlay3d_->setPosition(0, 0, -10);
+    //Ogre::Entity* ent = this->getScene()->getSceneManager()->createEntity("Arrow3D", "Arrow3D.mesh");
+
+    Model* arrow = new Model(this);
+    MovableEntity* arrowEntity = new MovableEntity(this);
+    arrow->setMeshSource("Arrow3D.mesh");
+    arrowEntity->attach(arrow);
+    arrowEntity->setVisible(true);
+    arrowEntity->scale(1);
+    arrowEntity->setPosition(0, 0, -200);
+    arrowEntity->attachToNode(this->overlay3d_);
+    //this->add3DMesh(arrowEntity);
+
+    this->overlay3d_->setPosition(0, 0, -200);
+    this->overlay3d_->setVisible(false, true);
 }
 
 HUDNavigation::~HUDNavigation()
@@ -183,6 +196,19 @@
     unsigned int markerCount_ = 0;
     bool closeEnough_ = false; //only display objects that are close enough to be relevant for the player
 
+    //for the first element of sortedObjectList_ / the closest waypoint show the Arrow3D
+    if(!sortedObjectList_.empty())
+    {
+    	showArrow3D();
+		sortedList::iterator firstIt = sortedObjectList_.begin();
+		Ogre::Vector3 pos1 = firstIt->first->getRVWorldPosition();
+		Ogre::Vector3 pos2 = cam->getPosition();
+		Ogre::Quaternion quat = pos2.getRotationTo(pos1);
+		this->overlay3d_->rotate(quat);
+		//this->overlay3d_->setDirection(pos1-pos2);
+    }
+
+
 //         for (ObjectMap::iterator it = activeObjectList_.begin(); it != activeObjectList_.end(); ++it)
     for ( sortedList::iterator listIt = sortedObjectList_.begin(); listIt != sortedObjectList_.end(); ++markerCount_, ++listIt )
     {
@@ -449,5 +475,10 @@
             this->addObject ( *it );
     }
 }
+void HUDNavigation::showArrow3D()
+		{ this->overlay3d_->setVisible(true, true);}
+void HUDNavigation::hideArrow3D()
+		{ this->overlay3d_->setVisible(false, true);}
 
+
 }

Modified: code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.h
===================================================================
--- code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.h	2012-05-11 14:03:55 UTC (rev 9176)
+++ code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.h	2012-05-11 14:20:50 UTC (rev 9177)
@@ -41,6 +41,7 @@
 #include "interfaces/RadarListener.h"
 #include "overlays/OrxonoxOverlay.h"
 
+
 namespace orxonox
 {
 class _OverlaysExport HUDNavigation : public OrxonoxOverlay, public Tickable, public RadarListener
@@ -51,6 +52,8 @@
 
     void setConfigValues();
 
+
+
     virtual void XMLPort ( Element& xmlelement, XMLPort::Mode mode );
     virtual void tick ( float dt );
 
@@ -80,6 +83,9 @@
 
     };
 
+    void showArrow3D();
+    void hideArrow3D();
+
     bool showObject( RadarViewable* rv );
 
     // XMLPort accessors




More information about the Orxonox-commit mailing list