- Timestamp:
- May 24, 2008, 3:38:39 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/network/src/orxonox/hud/RadarOverlayElement.cc
r1408 r1410 29 29 #include "RadarOverlayElement.h" 30 30 31 #include <string .h>31 #include <string> 32 32 #include <OgreOverlayManager.h> 33 33 #include <OgreStringConverter.h> 34 #include <OgrePanelOverlayElement.h>35 34 36 35 #include "GraphicsEngine.h" … … 38 37 #include "core/ConsoleCommand.h" 39 38 #include "objects/SpaceShip.h" 39 #include "RadarObject.h" 40 40 #include "HUD.h" 41 41 42 42 namespace orxonox 43 43 { 44 45 44 using namespace Ogre; 46 45 … … 53 52 void RadarOverlayElement::init(Real leftRel, Real topRel, Real dimRel, OverlayContainer* container){ 54 53 // some initial data 55 54 om = &OverlayManager::getSingleton(); 56 55 dimRel_ = dimRel; 57 56 leftRel_ = leftRel; … … 80 79 shipPos_ = SpaceShip::getLocalShip()->getPosition(); 81 80 currentDir_ = SpaceShip::getLocalShip()->getDir(); 82 81 currentOrth_ = SpaceShip::getLocalShip()->getOrth(); 83 82 RadarObject* ro = HUD::getSingleton().getFirstRadarObject(); 84 83 // iterate through all RadarObjects 85 86 84 while(ro != NULL){ 85 // calc position on radar... 87 86 float radius = calcRadius(shipPos_, currentDir_, currentOrth_, ro); 88 87 float phi = calcPhi(shipPos_, currentDir_, currentOrth_, ro); … … 105 104 } 106 105 ro = ro->next; 107 106 } 108 107 } 109 108 110 111 112 113 114 115 116 117 118 119 109 void RadarOverlayElement::listObjects(){ 110 int i = 0; 111 RadarObject* ro = HUD::getSingleton().getFirstRadarObject(); 112 COUT(3) << "List of RadarObjects:\n"; 113 // iterate through all Radar Objects 114 while(ro != NULL) { 115 COUT(3) << i++ << ": " << ro->pos_ << std::endl; 116 ro = ro->next; 117 } 118 } 120 119 121 122 123 124 120 float RadarOverlayElement::calcRadius(Vector3 pos, Vector3 dir, Vector3 orth, RadarObject* obj){ 121 return(acos((dir.dotProduct(obj->pos_ - pos))/ 122 ((obj->pos_ - pos).length()*dir.length()))); 123 } 125 124 126 127 128 129 130 131 (orth.length()*proj.length())));132 125 float RadarOverlayElement::calcPhi(Vector3 pos, Vector3 dir, Vector3 orth, RadarObject* obj){ 126 // project difference vector on our plane... 127 Vector3 proj = Plane(dir, pos).projectVector(obj->pos_ - pos); 128 // ...and find out the angle 129 return(acos((orth.dotProduct(proj))/ 130 (orth.length()*proj.length()))); 131 } 133 132 134 135 136 133 bool RadarOverlayElement::calcRight(Vector3 pos, Vector3 dir, Vector3 orth, RadarObject* obj){ 134 if((dir.crossProduct(orth)).dotProduct(obj->pos_ - pos) > 0) 135 return true; 137 136 else return false; 138 137 } 139 138 }
Note: See TracChangeset
for help on using the changeset viewer.