]> git.mxchange.org Git - flightgear.git/blobdiff - src/Instrumentation/NavDisplay.cxx
Move viewer-related sources to separate folder.
[flightgear.git] / src / Instrumentation / NavDisplay.cxx
index e8679ea15fcb86b4c3c09fe1b23ffa7b62a5a3c5..5c6720ae19d7b1398cd5bd0b5b3b14feaaaeb9c8 100644 (file)
@@ -418,7 +418,6 @@ NavDisplay::NavDisplay(SGPropertyNode *node) :
     _odg(0),
     _scale(0),
     _view_heading(0),
-    _resultTexture(0),
     _font_size(0),
     _font_spacing(0),
     _rangeNm(0)
@@ -485,9 +484,9 @@ NavDisplay::NavDisplay(SGPropertyNode *node) :
 
 NavDisplay::~NavDisplay()
 {
+  delete _odg;
 }
 
-
 void
 NavDisplay::init ()
 {
@@ -497,21 +496,26 @@ NavDisplay::init ()
   
     _serviceable_node = _Instrument->getNode("serviceable", true);
     _rangeNode = _Instrument->getNode("range", true);
-    _rangeNode->setDoubleValue(40.0);
+    if (!_rangeNode->hasValue()) {
+      _rangeNode->setDoubleValue(40.0);
+    }
     _rangeNode->addChangeListener(_cacheListener.get());
     _rangeNode->addChangeListener(_forceUpdateListener.get());
   
     _xCenterNode = _Instrument->getNode("x-center");
-    _xCenterNode->setDoubleValue(0.5);
+    if (!_xCenterNode->hasValue()) {
+      _xCenterNode->setDoubleValue(0.5);
+    }
     _xCenterNode->addChangeListener(_forceUpdateListener.get());
     _yCenterNode = _Instrument->getNode("y-center");
-    _yCenterNode->setDoubleValue(0.5);
+    if (!_yCenterNode->hasValue()) {
+      _yCenterNode->setDoubleValue(0.5);
+    }
     _yCenterNode->addChangeListener(_forceUpdateListener.get());
   
     // texture name to use in 2D and 3D instruments
     _texture_path = _Instrument->getStringValue("radar-texture-path",
         "Aircraft/Instruments/Textures/od_wxradar.rgb");
-    _resultTexture = FGTextureManager::createTexture(_texture_path.c_str(), false);
 
     string path = _Instrument->getStringValue("symbol-texture-path",
         "Aircraft/Instruments/Textures/nd-symbols.png");
@@ -523,8 +527,7 @@ NavDisplay::init ()
     // no mipmap or else alpha will mix with pixels on the border of shapes, ruining the effect
     _symbolTexture = SGLoadTexture2D(tpath, NULL, false, false);
 
-    FGInstrumentMgr *imgr = (FGInstrumentMgr *)globals->get_subsystem("instrumentation");
-    _odg = (FGODGauge *)imgr->get_subsystem("od_gauge");
+    _odg = new FGODGauge;
     _odg->setSize(_Instrument->getIntValue("texture-size", 512));
 
     _route = static_cast<FGRouteMgr*>(globals->get_subsystem("route-manager"));
@@ -537,6 +540,7 @@ NavDisplay::init ()
     _testModeNode = _Instrument->getChild("test-mode", 0, true);
     _testModeNode->setBoolValue(false);
   
+    _viewHeadingNode = _Instrument->getChild("view-heading-deg", 0, true);
 // OSG geometry setup
     _radarGeode = new osg::Geode;
 
@@ -644,6 +648,7 @@ NavDisplay::update (double delta_time_sec)
   } else {
     _view_heading = _Instrument->getFloatValue("heading-up-deg", 0.0);
   }
+  _viewHeadingNode->setDoubleValue(_view_heading);
   
   double xCenterFrac = _xCenterNode->getDoubleValue();
   double yCenterFrac = _yCenterNode->getDoubleValue();