[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