18 _name(node->getStringValue(
"name",
"slip-skid-ball")),
19 _num(node->getIntValue(
"number", 0))
31 branch =
"/instrumentation/" + _name;
33 SGPropertyNode *node =
fgGetNode(branch, _num,
true );
34 _serviceable_node = node->getChild(
"serviceable", 0,
true);
35 _y_accel_node =
fgGetNode(
"/accelerations/pilot/y-accel-fps_sec",
true);
36 _z_accel_node =
fgGetNode(
"/accelerations/pilot/z-accel-fps_sec",
true);
37 _out_node = node->getChild(
"indicated-slip-skid", 0,
true);
38 _override_node = node->getChild(
"override", 0,
true);
46 _out_node->setDoubleValue(0.0);
52 if (_serviceable_node->getBoolValue() && !_override_node->getBoolValue()) {
53 double d = -_z_accel_node->getDoubleValue();
56 double pos = _y_accel_node->getDoubleValue() / d * 10.0;
57 pos =
fgGetLowPass(_out_node->getDoubleValue(), pos, delta_time_sec);
58 _out_node->setDoubleValue(pos);
65SGSubsystemMgr::InstancedRegistrant<SlipSkidBall> registrantSlipSkidBall(
67 {{
"instrumentation", SGSubsystemMgr::Dependency::HARD}},
void update(double dt) override
SlipSkidBall(SGPropertyNode *node)
SGPropertyNode * fgGetNode(const char *path, bool create)
Get a property node.
double fgGetLowPass(double current, double target, double timeratio)
Move a value towards a target.