]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/viewmgr.hxx
Improve timing statistics
[flightgear.git] / src / Main / viewmgr.hxx
index 2955ac845c9af2ab42375775ad859ec8d3fd141e..6461af11a90fdaad16b99e92ab235470d7610d67 100644 (file)
 #define _VIEWMGR_HXX
 
 #include <vector>
+#include <list>
 
 #include <simgear/compiler.h>
 #include <simgear/structure/subsystem_mgr.hxx>
+#include <simgear/props/props.hxx>
 #include <simgear/math/SGMath.hxx>
 
 // forward decls
 class FGViewer;
+class SGSoundMgr;
 typedef SGSharedPtr<FGViewer> 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<const char*> 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<SGPropertyNode_ptr> config_list;
     typedef std::vector<FGViewerPtr> 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