]> git.mxchange.org Git - flightgear.git/commitdiff
export absolute viewer coordinates
authormfranz <mfranz>
Fri, 19 Dec 2008 13:37:54 +0000 (13:37 +0000)
committermfranz <mfranz>
Fri, 19 Dec 2008 13:37:54 +0000 (13:37 +0000)
src/Main/viewmgr.cxx
src/Main/viewmgr.hxx

index 806d9451a45472b9935a5c3d0f4a772884cff199..75785e1c3d4136883aedc590bb9b6dc683a9b1fc 100644 (file)
@@ -212,6 +212,9 @@ FGViewMgr::bind ()
        &FGViewMgr::getNear_m, &FGViewMgr::setNear_m);
   fgSetArchivable("/sim/current-view/ground-level-nearplane-m");
 
+  fgTie("/sim/current-view/viewer-x-m", this, &FGViewMgr::getViewerPositionX_m);
+  fgTie("/sim/current-view/viewer-y-m", this, &FGViewMgr::getViewerPositionY_m);
+  fgTie("/sim/current-view/viewer-z-m", this, &FGViewMgr::getViewerPositionZ_m);
 }
 
 void
@@ -229,6 +232,9 @@ FGViewMgr::unbind ()
   fgUntie("/sim/current-view/axes/long");
   fgUntie("/sim/current-view/axes/lat");
   fgUntie("/sim/current-view/ground-level-nearplane-m");
+  fgUntie("/sim/current-view/viewer-x-m");
+  fgUntie("/sim/current-view/viewer-y-m");
+  fgUntie("/sim/current-view/viewer-z-m");
 }
 
 void
@@ -287,6 +293,7 @@ FGViewMgr::update (double dt)
   // Update the current view
   do_axes();
   view->update(dt);
+  abs_viewer_position = loop_view->getViewPosition();
 }
 
 void
index f593715684eb9cfb6daace273d69f24cfeca71b3..f3b85136d20cb75133a5fe83e6620f806f5796f8 100644 (file)
@@ -147,11 +147,15 @@ private:
     void setViewAxisLat (double axis);
     int getView () const;
     void setView (int newview);
+    double getViewerPositionX_m () const { return abs_viewer_position[0]; }
+    double getViewerPositionY_m () const { return abs_viewer_position[1]; }
+    double getViewerPositionZ_m () const { return abs_viewer_position[2]; }
 
     SGPropertyNode_ptr view_number;
     vector<SGPropertyNode_ptr> config_list;
     typedef vector<SGSharedPtr<FGViewer> > viewer_list;
     viewer_list views;
+    SGVec3d abs_viewer_position;
 
     int current;