X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInstrumentation%2Fwxradar.cxx;h=b1f81be656ebf2e293ba902f662e6331943a4990;hb=805c4cbba15c6922e511b3a20ba5a9cb56ceed4f;hp=acbd1b6cfebf0c11afe378d1ed2aafd758df262f;hpb=efb8099a39190c9fa01ff5f2a9bc9143ae4bd454;p=flightgear.git diff --git a/src/Instrumentation/wxradar.cxx b/src/Instrumentation/wxradar.cxx index acbd1b6cf..b1f81be65 100644 --- a/src/Instrumentation/wxradar.cxx +++ b/src/Instrumentation/wxradar.cxx @@ -45,12 +45,14 @@ #include #include + using std::stringstream; using std::endl; using std::setprecision; using std::fixed; using std::setw; using std::setfill; +using std::string; #include
#include
@@ -75,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), @@ -118,6 +119,7 @@ wxRadarBg::wxRadarBg(SGPropertyNode *node) : wxRadarBg::~wxRadarBg () { _font_node->removeChangeListener(this); + delete _odg; } @@ -125,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", @@ -153,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); @@ -285,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; @@ -354,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 @@ -536,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 @@ -915,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 @@ -938,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 @@ -987,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; } @@ -1015,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; }