// partially rewritten by Jim Wilson jim@kelcomaine.com using interface
// by David Megginson March 2002
//
-// Copyright (C) 1997 - 2000 Curtis L. Olson - curt@flightgear.org
+// Copyright (C) 1997 - 2000 Curtis L. Olson - http://www.flightgear.org/~curt
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
#include <simgear/compiler.h>
#include <simgear/constants.h>
+#include <simgear/structure/subsystem_mgr.hxx>
#include <simgear/scene/model/location.hxx>
#include <plib/sg.h> // plib include
-#include "fgfs.hxx"
-
#define FG_FOV_MIN 0.1
#define FG_FOV_MAX 179.9
};
// Define a structure containing view information
-class FGViewer : public FGSubsystem {
+class FGViewer : public SGSubsystem {
public:
// Constructor
FGViewer( fgViewType Type, bool from_model, int from_model_index,
- bool at_model, int at_model_index, double damping,
+ 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 ();
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).
double _target_pitch_deg;
double _target_heading_deg;
- double _damp;
+ double _damp_sync;
+ double _damp_roll;
+ double _damp_pitch;
+ double _damp_heading;
+
double _damped_roll_deg;
double _damped_pitch_deg;
double _damped_heading_deg;
- double _damp_alt;
- double _damped_alt_ft;
// Position offsets from FDM origin. The X axis is positive
// out the tail, Y is out the right wing, and Z is positive up.
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)
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 ) {
_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;
}