+private:
+
+ class lowpass {
+ private:
+ static double _dt;
+ double _coeff;
+ double _last;
+ bool _initialized;
+ public:
+ lowpass(double coeff) : _coeff(coeff), _initialized(false) {}
+ static inline void set_delta(double dt) { _dt = dt; }
+ double filter(double value) {
+ if (!_initialized) {
+ _initialized = true;
+ return _last = value;
+ }
+ double c = _dt / (_coeff + _dt);
+ return _last = value * c + _last * (1.0 - c);
+ }
+ };
+
+ lowpass *Throttle;
+ lowpass *Aileron;
+ lowpass *Elevator;
+ lowpass *Rudder;
+ lowpass *Aileron_Trim;
+ lowpass *Elevator_Trim;
+ lowpass *Rudder_Trim;
+ SGPropertyNode_ptr Speed_Max;
+