]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/location.cxx
Move the texture loader to SimGear
[flightgear.git] / src / Main / location.cxx
index 290ec52808bc21441b3b8368ab15b9ff6a402fe2..55196e99e098e9433b90329d504f86a56f4e6bc2 100644 (file)
 #include <simgear/math/point3d.hxx>
 #include <simgear/math/polar3d.hxx>
 #include <simgear/math/sg_geodesy.hxx>
+#include <simgear/math/vector.hxx>
 
 #include <Scenery/scenery.hxx>
 
-#include <simgear/math/vector.hxx>
-/*
 #include "globals.hxx"
-*/
 
 #include "location.hxx"
 
@@ -115,9 +113,15 @@ FGLocation::FGLocation( void ):
     _alt_ft(0),
     _roll_deg(0),
     _pitch_deg(0),
-    _heading_deg(0)
+    _heading_deg(0),
+    _cur_elev_m(0),
+    _tile_center(0)
 {
     sgdZeroVec3(_absolute_view_pos);
+    sgZeroVec3(_relative_view_pos);
+    sgZeroVec3(_zero_elev_view_pos);
+    sgMakeRotMat4( UP, 0.0, 0.0, 0.0 );
+    sgMakeRotMat4( TRANS, 0.0, 0.0, 0.0 );
 }
 
 
@@ -244,7 +248,7 @@ FGLocation::recalcPosition (double lon_deg, double lat_deg, double alt_ft) const
   Point3D p = Point3D(lon_deg * SG_DEGREES_TO_RADIANS,
                      lat_geoc_rad,
                      sea_level_radius_m);
-  Point3D tmp = sgPolarToCart3d(p) - scenery.get_center();
+  Point3D tmp = sgPolarToCart3d(p) - _tile_center;
   sgSetVec3(_zero_elev_view_pos, tmp[0], tmp[1], tmp[2]);
 
                                // Calculate the absolute view position
@@ -257,11 +261,15 @@ FGLocation::recalcPosition (double lon_deg, double lat_deg, double alt_ft) const
                                // Calculate the relative view position
                                // from the scenery center.
                                 // aka Relative View Position
+
+  // FIXME: view position should ONLY be calculated in the viewer...
+  // Anything else should calculate their own positions relative to the 
+  // viewer's tile_center.
   sgdVec3 scenery_center;
   sgdSetVec3(scenery_center,
-            scenery.get_center().x(),
-            scenery.get_center().y(),
-            scenery.get_center().z());
+        globals->get_scenery()->get_center().x(),
+        globals->get_scenery()->get_center().y(),
+        globals->get_scenery()->get_center().z());
   sgdVec3 view_pos;
   sgdSubVec3(view_pos, _absolute_view_pos, scenery_center);
   sgSetVec3(_relative_view_pos, view_pos);
@@ -272,8 +280,3 @@ void
 FGLocation::update (int dt)
 {
 }
-
-
-
-
-