X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fviewmgr.hxx;h=6461af11a90fdaad16b99e92ab235470d7610d67;hb=38226af24ec01e8f0a20d7fd73ef838a69f6ef25;hp=2955ac845c9af2ab42375775ad859ec8d3fd141e;hpb=0cdb9d4efb249dd85b7e56d1885d8183de231373;p=flightgear.git diff --git a/src/Main/viewmgr.hxx b/src/Main/viewmgr.hxx index 2955ac845..6461af11a 100644 --- a/src/Main/viewmgr.hxx +++ b/src/Main/viewmgr.hxx @@ -25,13 +25,16 @@ #define _VIEWMGR_HXX #include +#include #include #include +#include #include // forward decls class FGViewer; +class SGSoundMgr; typedef SGSharedPtr FGViewerPtr; // Define a structure containing view information @@ -67,13 +70,13 @@ public: // setters void clear(); - inline void set_view( const int v ) { current = v; } + void add_view( FGViewer * v ); - // copies current offset settings to current-view path... - void copyToCurrent (); - private: + void do_bind(); + + list tied_props; double axis_long; double axis_lat; @@ -116,6 +119,26 @@ private: int getView () const; void setView (int newview); +// quaternion accessors, for debugging: + double getCurrentViewOrientation_w() const; + double getCurrentViewOrientation_x() const; + double getCurrentViewOrientation_y() const; + double getCurrentViewOrientation_z() const; + double getCurrentViewOrOffset_w() const; + double getCurrentViewOrOffset_x() const; + double getCurrentViewOrOffset_y() const; + double getCurrentViewOrOffset_z() const; + double getCurrentViewFrame_w() const; + double getCurrentViewFrame_x() const; + double getCurrentViewFrame_y() const; + double getCurrentViewFrame_z() const; + + bool stationary () const; + + // copies current offset settings to current-view path... + void copyToCurrent (); + + bool inited; SGPropertyNode_ptr view_number; vector config_list; typedef std::vector viewer_list; @@ -123,8 +146,20 @@ private: SGVec3d abs_viewer_position; int current; + SGQuatd current_view_orientation, current_view_or_offset; + + SGSoundMgr *smgr; }; +// This takes the conventional aviation XYZ body system +// i.e. x=forward, y=starboard, z=bottom +// which is widely used in FGFS +// and rotates it into the OpenGL camera system +// i.e. Xprime=starboard, Yprime=top, Zprime=aft. +inline const SGQuatd fsb2sta() +{ + return SGQuatd(-0.5, -0.5, 0.5, 0.5); +} #endif // _VIEWMGR_HXX