Changeset 1393 for code/trunk/src/orxonox/hud/RadarOverlayElement.cc
- Timestamp:
- May 23, 2008, 6:40:19 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/orxonox/hud/RadarOverlayElement.cc
r1392 r1393 22 22 * Yuning Chai 23 23 * Co-authors: 24 * ...24 * Felix Schulthess 25 25 * 26 26 */ … … 37 37 #include "core/ConsoleCommand.h" 38 38 #include "objects/SpaceShip.h" 39 #include "HUD.h" 39 40 #include "RadarOverlayElement.h" 40 41 … … 57 58 topRel_ = topRel; 58 59 container_ = container; 59 firstRadarObject_ = NULL;60 lastRadarObject_ = NULL;61 focus_ = NULL;62 63 // create nav marker ...64 navMarker_ = static_cast<PanelOverlayElement*>(om->createOverlayElement("Panel", "NavMarker"));65 navMarker_->setMetricsMode(GMM_PIXELS);66 navMarker_->setMaterialName("Orxonox/NavMarker");67 navMarker_->setDimensions(16,16);68 navMarker_->setPosition(0,386);69 navMarker_->hide();70 container_->addChild(navMarker_);71 60 72 61 // these have to fit the data in the level … … 98 87 void RadarOverlayElement::update() { 99 88 shipPos_ = SpaceShip::instance_s->getPosition(); 100 currentDir_ = SpaceShip::instance_s->getOrientation()*initialDir_; // according to beni....89 currentDir_ = SpaceShip::instance_s->getOrientation()*initialDir_; 101 90 currentOrth_ = SpaceShip::instance_s->getOrientation()*initialOrth_; 102 91 plane = Plane(currentDir_, shipPos_); 103 104 RadarObject* ro = firstRadarObject_; 92 RadarObject* ro = HUD::getSingleton().getFirstRadarObject(); 105 93 // iterate through all RadarObjects 106 94 while(ro != NULL){ … … 125 113 3.5*dim_/2+dim_/2+left_-2,-cos(ro->phi_)*ro->radius_/3.5*dim_/2+dim_/2+top_-2); 126 114 } 115 listObjects(); 127 116 ro = ro->next; 128 117 } 129 updateNavMarker();130 118 } 131 132 void RadarOverlayElement::updateNavMarker(){133 if(focus_ == NULL) return;134 // from the angle we find out where to draw the marker135 // and which of the four arrows to take136 float r1 = atan((float)(windowW_)/(float)(windowH_));137 float phi = focus_->phi_;138 if(focus_->right_){139 if(phi<r1){140 navMarker_->setPosition(tan(phi)*windowH_/2+windowW_/2, 0);141 navMarker_->setUV(0.5, 0.0, 1.0, 0.5);142 }143 else if(phi>3.14-r1){144 navMarker_->setPosition(-tan(phi)*windowH_/2+windowW_/2, windowH_-16);145 navMarker_->setUV(0.0, 0.5, 0.5, 1.0);146 }147 else {148 navMarker_->setPosition(windowW_-16, -tan((3.14-2*phi)/2)*windowW_/2+windowH_/2);149 navMarker_->setUV(0.5, 0.5, 1.0, 1.0);150 }151 }152 else{153 if(phi<r1) {154 navMarker_->setPosition(-tan(phi)*windowH_/2+windowW_/2, 0);155 navMarker_->setUV(0.5, 0.0, 1.0, 0.5);156 }157 else if(phi>3.14-r1) {158 navMarker_->setPosition(tan(phi)*windowH_/2+windowW_/2, windowH_-16);159 navMarker_->setUV(0.0, 0.5, 0.5, 1.0);160 }161 else {162 navMarker_->setPosition(0, -tan((3.14-2*phi)/2)*windowW_/2+windowH_/2);163 navMarker_->setUV(0.0, 0.0, 0.5, 0.5);164 }165 }166 }167 168 void RadarOverlayElement::addObject(Vector3 pos){169 if(firstRadarObject_ == NULL){170 firstRadarObject_ = new RadarObject(container_, pos);171 lastRadarObject_ = firstRadarObject_;172 }173 else{174 lastRadarObject_->next = new RadarObject(container_, pos);175 lastRadarObject_ = lastRadarObject_->next;176 }177 }178 119 179 120 void RadarOverlayElement::listObjects(){ 180 121 int i = 0; 181 RadarObject* ro = firstRadarObject_;122 RadarObject* ro = HUD::getSingleton().getFirstRadarObject(); 182 123 COUT(3) << "List of RadarObjects:\n"; 183 124 // iterate through all Radar Objects … … 186 127 ro = ro->next; 187 128 } 188 }189 190 float RadarOverlayElement::getDist2Focus(){191 if(focus_ == NULL) return(0.0);192 return((focus_->pos_-shipPos_).length());193 129 } 194 130 … … 211 147 else return false; 212 148 } 213 214 void RadarOverlayElement::cycleFocus(){215 if(focus_ == NULL){216 focus_ = firstRadarObject_;217 }218 else{219 focus_->panel_->setMaterialName("Orxonox/RedDot");220 focus_ = focus_->next;221 }222 223 if(focus_ == NULL){224 navMarker_->hide();225 }226 else{227 navMarker_->show();228 focus_->panel_->setMaterialName("Orxonox/WhiteDot");229 }230 }231 149 } 232 233 /* my local clipboard...234 COUT(3) << "WWWWWWWWWWWWWWWWWWWWWWWWWWWW\n";235 COUT(3) << firstRadarObject_->radius_ << " " << firstRadarObject_->phi_ << std::endl;236 COUT(3) << "WWWWWWWWWWWWWWWWWWWWWWWWWWWW\n";237 */
Note: See TracChangeset
for help on using the changeset viewer.