X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FSystems%2Fstatic.cxx;h=d3cbbbf361d7090053355cdb91603f607179bd7d;hb=ed30b0c9a3818d5b8a306827184ac3525a1d8bdf;hp=866845befdb8b0d19b0431c1fc0385c143859b80;hpb=2acdd02879a56d8b25eaef7dca4f90b96075df10;p=flightgear.git diff --git a/src/Systems/static.cxx b/src/Systems/static.cxx index 866845bef..d3cbbbf36 100644 --- a/src/Systems/static.cxx +++ b/src/Systems/static.cxx @@ -8,7 +8,12 @@ #include
-StaticSystem::StaticSystem () +StaticSystem::StaticSystem ( SGPropertyNode *node ) + : + _name(node->getStringValue("name", "static")), + _num(node->getIntValue("number", 0)), + _tau(node->getDoubleValue("tau", 1)) + { } @@ -19,9 +24,13 @@ StaticSystem::~StaticSystem () void StaticSystem::init () { - _serviceable_node = fgGetNode("/systems/static[0]/serviceable", true); + string branch; + branch = "/systems/" + _name; + + SGPropertyNode *node = fgGetNode(branch.c_str(), _num, true ); + _serviceable_node = node->getChild("serviceable", 0, true); _pressure_in_node = fgGetNode("/environment/pressure-inhg", true); - _pressure_out_node = fgGetNode("/systems/static[0]/pressure-inhg", true); + _pressure_out_node = node->getChild("pressure-inhg", 0, true); } void @@ -38,11 +47,11 @@ void StaticSystem::update (double dt) { if (_serviceable_node->getBoolValue()) { - + double trat = _tau ? dt/_tau : 100; double target = _pressure_in_node->getDoubleValue(); double current = _pressure_out_node->getDoubleValue(); // double delta = target - current; - _pressure_out_node->setDoubleValue(fgGetLowPass(current, target, dt)); + _pressure_out_node->setDoubleValue(fgGetLowPass(current, target, trat)); } }