]> git.mxchange.org Git - flightgear.git/commitdiff
Restore camera properties on reInit
authortimoore <timoore>
Tue, 25 Nov 2008 22:50:20 +0000 (22:50 +0000)
committertimoore <timoore>
Tue, 25 Nov 2008 22:50:20 +0000 (22:50 +0000)
From Tatsuhiro Nishioka

src/Main/fg_init.cxx

index a23532db1a6cbc04663598813faaaf608e4f618c..a6d12bf2b48aad456dc03ab2db53b4dbdc63959a 100644 (file)
@@ -1784,6 +1784,14 @@ void reInit(void)  // from gui_local.cxx -- TODO merge with fgReInitSubsystems()
     int xsize = fgGetInt("/sim/startup/xsize");
     int ysize = fgGetInt("/sim/startup/ysize");
 
+    // viewports also needs to be saved/restored as
+    // restoreInitialState() overwrites these
+    SGPropertyNode *guiNode = new SGPropertyNode;
+    SGPropertyNode *cameraNode = new SGPropertyNode;
+    SGPropertyNode *cameraGroupNode = fgGetNode("/sim/rendering/camera-group");
+    copyProperties(cameraGroupNode->getChild("camera"), cameraNode);
+    copyProperties(cameraGroupNode->getChild("gui"), guiNode);
+
     globals->restoreInitialState();
 
     // update our position based on current presets
@@ -1794,6 +1802,12 @@ void reInit(void)  // from gui_local.cxx -- TODO merge with fgReInitSubsystems()
     fgSetInt("/sim/startup/xsize", xsize);
     fgSetInt("/sim/startup/ysize", ysize);
 
+    copyProperties(cameraNode, cameraGroupNode->getChild("camera"));
+    copyProperties(guiNode, cameraGroupNode->getChild("gui"));
+
+    delete guiNode;
+    delete cameraNode;
+
     SGTime *t = globals->get_time_params();
     delete t;
     t = fgInitTime();