X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fviewer.hxx;h=3f9c95e2917ae8a58eed703198fb2fa64c5f1349;hb=09d4176e963be04dec40943083e369081b8f7a18;hp=890d351876b99c4cfac01d701e88278556e811ef;hpb=3c7bdc31d9b0556430d75d75dffe780e5be96daa;p=flightgear.git diff --git a/src/Main/viewer.hxx b/src/Main/viewer.hxx index 890d35187..3f9c95e29 100644 --- a/src/Main/viewer.hxx +++ b/src/Main/viewer.hxx @@ -34,12 +34,11 @@ #include #include +#include #include #include // plib include -#include "fgfs.hxx" - #define FG_FOV_MIN 0.1 #define FG_FOV_MAX 179.9 @@ -49,7 +48,7 @@ enum fgViewType { }; // Define a structure containing view information -class FGViewer : public FGSubsystem { +class FGViewer : public SGSubsystem { public: @@ -63,17 +62,18 @@ public: // Constructor FGViewer( fgViewType Type, bool from_model, int from_model_index, bool at_model, int at_model_index, + double damp_roll, double damp_pitch, double damp_heading, double x_offset_m, double y_offset_m, double z_offset_m, double heading_offset_deg, double pitch_offset_deg, double roll_offset_deg, double fov_deg, double target_x_offset_m, double target_y_offset_m, - double target_z_offset_m, double near_m ); + double target_z_offset_m, double near_m, bool internal ); // Destructor virtual ~FGViewer( void ); ////////////////////////////////////////////////////////////////////// - // Part 1: standard FGSubsystem implementation. + // Part 1: standard SGSubsystem implementation. ////////////////////////////////////////////////////////////////////// virtual void init (); @@ -89,6 +89,9 @@ public: virtual fgViewType getType() const { return _type; } virtual void setType( int type ); + virtual bool getInternal() const { return _internal; } + virtual void setInternal( bool internal ); + // Reference geodetic position of view from position... // These are the actual aircraft position (pilot in // pilot view, model in model view). @@ -285,6 +288,15 @@ private: double _target_pitch_deg; double _target_heading_deg; + double _damp_sync; + double _damp_roll; + double _damp_pitch; + double _damp_heading; + + double _damped_roll_deg; + double _damped_pitch_deg; + double _damped_heading_deg; + // Position offsets from FDM origin. The X axis is positive // out the tail, Y is out the right wing, and Z is positive up. // distance in meters @@ -314,6 +326,9 @@ private: fgViewType _type; fgScalingType _scaling_type; + // internal view (e.g. cockpit) flag + bool _internal; + // view is looking from a model bool _from_model; int _from_model_index; // number of model (for multi model) @@ -376,6 +391,7 @@ private: void updateAtModelLocation (SGLocation * location); void recalcOurOwnLocation (SGLocation * location, double lon_deg, double lat_deg, double alt_ft, double roll_deg, double pitch_deg, double heading_deg); + void dampEyeData (double &roll_deg, double &pitch_deg, double &heading_deg); // add to _heading_offset_deg inline void incHeadingOffset_deg( double amt ) { @@ -389,6 +405,12 @@ private: _pitch_offset_deg += amt; } + // add to _roll_offset_deg + inline void incRollOffset_deg( double amt ) { + set_dirty(); + _roll_offset_deg += amt; + } + inline void set_reverse_view_offset( bool val ) { _reverse_view_offset = val; }