#ifndef _UFO_HXX
#define _UFO_HXX
-
#include "flight.hxx"
class FGUFO: public FGInterface {
- double Throttle;
- double Aileron;
- double Elevator;
- double Elevator_Trim;
- double Rudder;
+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;
public:
FGUFO( double dt );
~FGUFO();
- // reset flight params to a specific position
+ // reset flight params to a specific position
void init();
// update position based on inputs, positions, velocities, etc.