out[0] = out[1] = out[2] = 0;
in[3] = out[3] = 1;
string contents_node;
+ contrail_altitude = 30000.0;
}
FGSubmodelMgr::~FGSubmodelMgr ()
FGSubmodelMgr::init ()
{
load();
- _serviceable_node = fgGetNode("/sim/systems/submodels/serviceable", true);
+ _serviceable_node = fgGetNode("/sim/submodels/serviceable", true);
_user_lat_node = fgGetNode("/position/latitude-deg", true);
_user_lon_node = fgGetNode("/position/longitude-deg", true);
_user_speed_east_fps_node = fgGetNode("/velocities/speed-east-fps",true);
_user_speed_north_fps_node = fgGetNode("/velocities/speed-north-fps",true);
- ai = (FGAIManager*)globals->get_subsystem("ai_model");
+ _contrail_altitude_node = fgGetNode("/environment/params/contrail-altitude", true);
+ contrail_altitude = _contrail_altitude_node->getDoubleValue();
+ _contrail_trigger = fgGetNode("ai/submodels/contrails", true);
+ _contrail_trigger->setBoolValue(false);
+ ai = (FGAIManager*)globals->get_subsystem("ai_model");
}
{
if (!(_serviceable_node->getBoolValue())) return;
int i=-1;
+
+ _contrail_trigger->setBoolValue(_user_alt_node->getDoubleValue() > contrail_altitude);
+
submodel_iterator = submodels.begin();
while(submodel_iterator != submodels.end()) {
i++;
void
FGSubmodelMgr::load ()
{
-
- int i;
- SGPropertyNode *path = fgGetNode("/sim/systems/submodels/path");
+ SGPropertyNode *path = fgGetNode("/sim/submodels/path");
SGPropertyNode root;
if (path) {
}
}
- int count = root.nChildren();
- for (i = 0; i < count; i++) {
- // cout << "Reading submodel " << i << endl;
- SGPropertyNode *prop;
+ vector<SGPropertyNode_ptr> children = root.getChildren("submodel");
+ vector<SGPropertyNode_ptr>::iterator it = children.begin();
+ vector<SGPropertyNode_ptr>::iterator end = children.end();
+ for (int i = 0; it < end; ++it, i++) {
+
+ // cout << "Reading submodel " << (*it)->getPath() << endl;
submodel* sm = new submodel;
- SGPropertyNode * entry_node = root.getChild(i);
+ SGPropertyNode * entry_node = *it;
sm->trigger = fgGetNode(entry_node->getStringValue("trigger", "none"), true);
sm->name = entry_node->getStringValue("name", "none_defined");
sm->model = entry_node->getStringValue("model", "Models/Geometry/rocket.ac");
sm->contents = sm->contents_node->getDoubleValue();
- sm->prop = fgGetNode("/systems/submodels/submodel", i, true);
+ sm->prop = fgGetNode("/ai/submodels/submodel", i, true);
sm->prop->tie("count", SGRawValuePointer<int>(&(sm->count)));
// sm->prop->tie("contents", SGRawValuePointer<double>(&(sm->contents)));