]> git.mxchange.org Git - flightgear.git/blobdiff - src/Instrumentation/wxradar.cxx
NavDisplay enhancements for Syd.
[flightgear.git] / src / Instrumentation / wxradar.cxx
index d167f78d5719f097e6a7fedec8485e8dcabac463..b1f81be656ebf2e293ba902f662e6331943a4990 100644 (file)
@@ -77,7 +77,6 @@ wxRadarBg::wxRadarBg(SGPropertyNode *node) :
     _interval(node->getDoubleValue("update-interval-sec", 1.0)),
     _elapsed_time(0),
     _persistance(0),
-    _sim_init_done(false),
     _odg(0),
     _range_nm(0),
     _scale(0),
@@ -120,6 +119,7 @@ wxRadarBg::wxRadarBg(SGPropertyNode *node) :
 wxRadarBg::~wxRadarBg ()
 {
     _font_node->removeChangeListener(this);
+    delete _odg;
 }
 
 
@@ -127,6 +127,7 @@ void
 wxRadarBg::init ()
 {
     _serviceable_node = _Instrument->getNode("serviceable", true);
+    _sceneryLoaded = fgGetNode("/sim/sceneryloaded", true);
 
     // texture name to use in 2D and 3D instruments
     _texture_path = _Instrument->getStringValue("radar-texture-path",
@@ -155,8 +156,7 @@ wxRadarBg::init ()
     // input range = n nm (20/40/80)
     // input display-mode = arc | rose | map | plan
 
-    FGInstrumentMgr *imgr = (FGInstrumentMgr *)globals->get_subsystem("instrumentation");
-    _odg = (FGODGauge *)imgr->get_subsystem("od_gauge");
+    _odg = new FGODGauge;
     _odg->setSize(512);
 
     _ai_enabled_node = fgGetNode("/sim/ai/enabled", true);
@@ -287,22 +287,17 @@ osg::Matrixf wxRotate(float angle)
 void
 wxRadarBg::update (double delta_time_sec)
 {
-    if (!_sim_init_done) {
-        if (!fgGetBool("sim/sceneryloaded", false))
-            return;
+    if (!_sceneryLoaded->getBoolValue())
+        return;
 
-        _sim_init_done = true;
-    }
     if (!_odg || !_serviceable_node->getBoolValue()) {
         _Instrument->setStringValue("status", "");
         return;
     }
+
     _time += delta_time_sec;
-    if (_time < _interval){
-//        cout << "WXradar update too soon " << _time << endl;
+    if (_time < _interval)
         return;
-    }
-//        cout << "WXradar updating" << _time<< endl;
 
     _time = 0.0;
 
@@ -356,7 +351,7 @@ wxRadarBg::update (double delta_time_sec)
                 _radar_centre_node->setBoolValue(false);
             }
 
-            //SG_LOG(SG_GENERAL, SG_DEBUG, "Radar: displacement "
+            //SG_LOG(SG_INSTR, SG_DEBUG, "Radar: displacement "
             //        << _x_offset <<", "<<_y_offset
             //        << " user_speed_east_fps * SG_FPS_TO_KT "
             //        << user_speed_east_fps * SG_FPS_TO_KT
@@ -538,7 +533,7 @@ wxRadarBg::update_weather()
                     * wxRotate(angle) * _centerTrans);
                 addQuad(_vertices, _texCoords, m, texBase);
 
-                //SG_LOG(SG_GENERAL, SG_DEBUG, "Radar: drawing clouds"
+                //SG_LOG(SG_INSTR, SG_DEBUG, "Radar: drawing clouds"
                 //        << " ID=" << cloudId
                 //        << " x=" << x
                 //        << " y="<< y
@@ -917,7 +912,7 @@ wxRadarBg::update_tacan()
         * wxRotate(angle) * _centerTrans);
     addQuad(_vertices, _texCoords, m, texBase);
 
-    //SG_LOG(SG_GENERAL, SG_DEBUG, "Radar:     drawing TACAN"
+    //SG_LOG(SG_INSTR, SG_DEBUG, "Radar:     drawing TACAN"
     //        << " dist=" << radius
     //        << " view_heading=" << _view_heading * SG_RADIANS_TO_DEGREES
     //        << " bearing=" << angle * SG_RADIANS_TO_DEGREES
@@ -940,7 +935,7 @@ wxRadarBg::update_heading_marker()
     m *= _centerTrans;
     addQuad(_vertices, _texCoords, m, texBase);
 
-    //SG_LOG(SG_GENERAL, SG_DEBUG, "Radar:   drawing heading marker"
+    //SG_LOG(SG_INSTR, SG_DEBUG, "Radar:   drawing heading marker"
     //        << " x,y " << x <<","<< y
     //        << " dist" << dist
     //        << " view_heading" << _view_heading * SG_RADIANS_TO_DEGREES
@@ -989,7 +984,7 @@ wxRadarBg::withinRadarHorizon(double user_alt, double alt, double range_nm)
         alt = 0; // to allow some vertical extent of target
 
     double radarhorizon = 1.23 * (sqrt(alt) + sqrt(user_alt));
-//    SG_LOG(SG_GENERAL, SG_ALERT, "Radar: radar horizon " << radarhorizon);
+//    SG_LOG(SG_INSTR, SG_ALERT, "Radar: radar horizon " << radarhorizon);
     return radarhorizon >= range_nm;
 }
 
@@ -1017,7 +1012,7 @@ wxRadarBg::inRadarRange(double sigma, double range_nm)
         constant = 35;
 
     double maxrange = constant * pow(sigma, 0.25);
-    //SG_LOG(SG_GENERAL, SG_DEBUG, "Radar: max range " << maxrange);
+    //SG_LOG(SG_INSTR, SG_DEBUG, "Radar: max range " << maxrange);
     return maxrange >= range_nm;
 }