#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>
#include <osgUtil/IntersectionVisitor>
#include <osgViewer/GraphicsWindow>
+#include <osgViewer/Renderer>
namespace flightgear
{
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
}
}
farCamera->setGraphicsContext(camera->getGraphicsContext());
farCamera->setCullingMode(camera->getCullingMode());
farCamera->setInheritanceMask(camera->getInheritanceMask());
+ farCamera->setReferenceFrame(Transform::ABSOLUTE_RF);
// Each camera's viewport is written when the window is
// resized; if the the viewport isn't copied here, it gets updated
// twice and ends up with the wrong value.
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);
}
}
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
const SGPropertyNode* windowNode = (cameraNode
? cameraNode->getNode("window")
: 0);
- static int cameraNum = 0;
if (!window) {
if (windowNode) {
// New style window declaration / definition
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);