]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/CameraGroup.cxx
fix a pointer reference.
[flightgear.git] / src / Main / CameraGroup.cxx
index 2ff1bb16921b4ecdf66a8f575f94cb35ef812f8a..9ba93143df6374b22c8743940fd123e4441fa75a 100644 (file)
@@ -23,6 +23,7 @@
 #include "WindowSystemAdapter.hxx"
 #include <simgear/props/props.hxx>
 #include <simgear/structure/OSGUtils.hxx>
+#include <simgear/scene/material/EffectCullVisitor.hxx>
 #include <simgear/scene/util/RenderConstants.hxx>
 
 #include <algorithm>
@@ -40,6 +41,7 @@
 #include <osgUtil/IntersectionVisitor>
 
 #include <osgViewer/GraphicsWindow>
+#include <osgViewer/Renderer>
 
 namespace flightgear
 {
@@ -100,14 +102,12 @@ void makeNewProjMat(Matrixd& oldProj, double znear,
 
 void installCullVisitor(Camera* camera)
 {
-#if 0 // Not yet
     osgViewer::Renderer* renderer
         = static_cast<osgViewer::Renderer*>(camera->getRenderer());
     for (int i = 0; i < 2; ++i) {
         osgUtil::SceneView* sceneView = renderer->getSceneView(i);
         sceneView->setCullVisitor(new simgear::EffectCullVisitor);
     }
-#endif
 }
 }
 
@@ -219,9 +219,11 @@ void CameraGroup::update(const osg::Vec3d& position,
 
 void CameraGroup::setCameraParameters(float vfov, float aspectRatio)
 {
-    _viewer->getCamera()->setProjectionMatrixAsPerspective(vfov,
-                                                           1.0f / aspectRatio,
-                                                           _zNear, _zFar);
+    if (vfov != 0.0f && aspectRatio != 0.0f)
+        _viewer->getCamera()
+            ->setProjectionMatrixAsPerspective(vfov,
+                                               1.0f / aspectRatio,
+                                               _zNear, _zFar);
 }
 }
 
@@ -296,7 +298,6 @@ CameraInfo* CameraGroup::buildCamera(SGPropertyNode* cameraNode)
     WindowBuilder *wBuild = WindowBuilder::getWindowBuilder();
     const SGPropertyNode* windowNode = cameraNode->getNode("window");
     GraphicsWindow* window = 0;
-    static int cameraNum = 0;
     int cameraFlags = DO_INTERSECTION_TEST;
     if (windowNode) {
         // New style window declaration / definition
@@ -398,7 +399,6 @@ CameraInfo* CameraGroup::buildGUICamera(SGPropertyNode* cameraNode,
     const SGPropertyNode* windowNode = (cameraNode
                                         ? cameraNode->getNode("window")
                                         : 0);
-    static int cameraNum = 0;
     if (!window) {
         if (windowNode) {
             // New style window declaration / definition
@@ -450,7 +450,7 @@ CameraGroup* CameraGroup::buildCameraGroup(osgViewer::Viewer* viewer,
             cgroup->buildGUICamera(pNode);
         }
     }
-    bindMemberToNode(gnode, "znear", cgroup, &CameraGroup::_zNear, .4f);
+    bindMemberToNode(gnode, "znear", cgroup, &CameraGroup::_zNear, .1f);
     bindMemberToNode(gnode, "zfar", cgroup, &CameraGroup::_zFar, 120000.0f);
     bindMemberToNode(gnode, "near-field", cgroup, &CameraGroup::_nearField,
                      100.0f);