#include <sstream>
#include <iomanip>
+
using std::stringstream;
using std::endl;
using std::setprecision;
using std::fixed;
using std::setw;
using std::setfill;
+using std::string;
#include <Main/fg_props.hxx>
#include <Main/globals.hxx>
_interval(node->getDoubleValue("update-interval-sec", 1.0)),
_elapsed_time(0),
_persistance(0),
- _sim_init_done(false),
_odg(0),
_range_nm(0),
_scale(0),
wxRadarBg::~wxRadarBg ()
{
_font_node->removeChangeListener(this);
+ delete _odg;
}
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",
// 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);
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;
_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
* 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
* 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
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
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;
}
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;
}