#include <Main/util.hxx>
-StaticSystem::StaticSystem ()
+StaticSystem::StaticSystem ( SGPropertyNode *node )
+ :
+ _name(node->getStringValue("name", "static")),
+ _num(node->getIntValue("number", 0)),
+ _tau(node->getDoubleValue("tau", 1))
+
{
}
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
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));
}
}