]> git.mxchange.org Git - flightgear.git/commitdiff
Avoid view-manager returning default SGGeod
authorJames Turner <zakalawe@mac.com>
Wed, 30 Dec 2015 20:27:54 +0000 (14:27 -0600)
committerJames Turner <zakalawe@mac.com>
Wed, 30 Dec 2015 20:48:01 +0000 (14:48 -0600)
- when switching views, force an update() to ensure view position
  is valid. Otherwise various subsystems such as AI traffic and the
  tile manager see a request for a 0,0 location.

- when switching to model view, we still generate a 0,0
  location initially - to be fixed.

src/Viewer/viewmgr.cxx
src/Viewer/viewmgr.hxx

index 5e7339b7779fb047090eac7778cecb1a79542ca7..3afcc45a41c4817b73eb2b4f6ddd20d4edb1ac26 100644 (file)
@@ -139,6 +139,14 @@ FGViewMgr::init ()
   do_bind();
 }
 
+void
+FGViewMgr::postinit()
+{
+    // force update now so many properties of the current view are valid,
+    // eg view position and orientation (as exposed via globals)
+    update(0.0);
+}
+
 void
 FGViewMgr::shutdown()
 {
@@ -732,6 +740,11 @@ FGViewMgr::setView (int newview)
   current = newview;
   // copy in view data
   copyToCurrent();
+
+    // force an update now, to avoid returning bogus data.
+    // real fix would to be make all the accessors use the dirty mechanism
+    // on FGViewer, so update() is a no-op.
+    update(0.0);
 }
 
 
index 4043c6b08e8744713d8e983b1634ab1c1a2fc727..95dbe4dd95519b6b9428b08482d403cf27d01d23 100644 (file)
@@ -49,6 +49,7 @@ public:
     ~FGViewMgr( void );
 
     virtual void init ();
+    virtual void postinit();
     virtual void bind ();
     virtual void unbind ();
     virtual void update (double dt);
@@ -73,7 +74,7 @@ public:
 
     void add_view( FGViewer * v );
     
-    static const char* subsystemName() { return "view-mgr"; }
+    static const char* subsystemName() { return "view-manager"; }
 private:
     void do_bind();