[Orxonox-commit 4547] r9219 - code/branches/waypoints/src/modules/overlays/hud

scmoritz at orxonox.net scmoritz at orxonox.net
Fri May 18 17:08:35 CEST 2012


Author: scmoritz
Date: 2012-05-18 17:08:35 +0200 (Fri, 18 May 2012)
New Revision: 9219

Modified:
   code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.cc
   code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.h
Log:
3D arrow added. Spinns around like crazy. the partyarrow needs a fix :)

Modified: code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.cc	2012-05-18 14:44:47 UTC (rev 9218)
+++ code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.cc	2012-05-18 15:08:35 UTC (rev 9219)
@@ -86,17 +86,22 @@
     //Ogre::Entity* ent = this->getScene()->getSceneManager()->createEntity("Arrow3D", "Arrow3D.mesh");
 
     Model* arrow = new Model(this);
-    MovableEntity* arrowEntity = new MovableEntity(this);
+    this->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_);
+    arrow->setSyncMode(0);
+    this->arrowEntity->attach(arrow);
+    this->arrowEntity->scale(1);
+    this->arrowEntity->setVisible(true);
+    this->arrowEntity->setPosition(0, +30, -100);
+    this->arrowEntity->setSyncMode(0);
+    this->arrowEntity->attachToNode(this->overlay3d_);
     //this->add3DMesh(arrowEntity);
 
-    this->overlay3d_->setPosition(0, 0, -200);
-    this->overlay3d_->setVisible(false, true);
+    //this->overlay3d_->setPosition(0, 0, 0);
+    //this->overlay3d_->setVisible(false, true);
+    this->overlay_->setZOrder(0);
+    this->overlay_->show();
+    hideArrow3D();
 }
 
 HUDNavigation::~HUDNavigation()
@@ -197,16 +202,20 @@
     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
+    //set the direction of the arrow to the closest waypoint
     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);
+
+		Ogre::Vector3 pos1 = camTransform * firstIt->first->getRVWorldPosition();
+		orxout(user_info, context::events()) << pos1 << endl;
+		this->arrowEntity->setDirection(1-pos1.x, 1 - pos1.y, 1 - pos1.z);
+
+		//this->arrowEntity->rotate(quat);
+		//this->overlay3d_->setDirection(pos1);
     }
+    else{hideArrow3D();}
 
 
 //         for (ObjectMap::iterator it = activeObjectList_.begin(); it != activeObjectList_.end(); ++it)
@@ -412,9 +421,14 @@
     this->background_->addChild ( panel );
     this->background_->addChild ( text );
 
-    sortedObjectList_.push_front ( std::make_pair ( object, ( unsigned int ) 0 ) );
+    Ogre::Vector3 temp = object->getWorldEntity()->getPosition();
+    unsigned int distance = sqrt(temp.x*temp.x+temp.y*temp.y+temp.z*temp.z);
 
 
+
+    sortedObjectList_.push_front ( std::make_pair ( object, distance ) );
+
+
 }
 
 void HUDNavigation::removeObject ( RadarViewable* viewable )

Modified: code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.h
===================================================================
--- code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.h	2012-05-18 14:44:47 UTC (rev 9218)
+++ code/branches/waypoints/src/modules/overlays/hud/HUDNavigation.h	2012-05-18 15:08:35 UTC (rev 9219)
@@ -86,6 +86,8 @@
     void showArrow3D();
     void hideArrow3D();
 
+    orxonox::MovableEntity* arrowEntity;
+
     bool showObject( RadarViewable* rv );
 
     // XMLPort accessors




More information about the Orxonox-commit mailing list