Added overriding of CullSettings::inheritCullSettings() into osg::Camera to
properly inherit the clear colour.
This commit is contained in:
@@ -508,6 +508,9 @@ class OSG_EXPORT Camera : public Transform, public CullSettings
|
||||
/** Transform method that must be defined to provide generic interface for scene graph traversals.*/
|
||||
virtual bool computeWorldToLocalMatrix(Matrix& matrix,NodeVisitor*) const;
|
||||
|
||||
/** Inherit the local cull settings variable from specified CullSettings object, according to the inheritance mask.*/
|
||||
virtual void inheritCullSettings(const CullSettings& settings, unsigned int inheritanceMask);
|
||||
|
||||
protected :
|
||||
|
||||
virtual ~Camera();
|
||||
|
||||
@@ -341,6 +341,18 @@ bool Camera::computeWorldToLocalMatrix(Matrix& matrix,NodeVisitor*) const
|
||||
return true;
|
||||
}
|
||||
|
||||
void Camera::inheritCullSettings(const CullSettings& settings, unsigned int inheritanceMask)
|
||||
{
|
||||
CullSettings::inheritCullSettings(settings, inheritanceMask);
|
||||
|
||||
if (inheritanceMask & CLEAR_COLOR)
|
||||
{
|
||||
//osg::notify(osg::NOTICE)<<"Inheriting slave Camera"<<std::endl;
|
||||
const Camera* camera = dynamic_cast<const Camera*>(&settings);
|
||||
_clearColor = camera->_clearColor;
|
||||
}
|
||||
}
|
||||
|
||||
void Camera::createCameraThread()
|
||||
{
|
||||
if (!_cameraThread)
|
||||
|
||||
@@ -157,8 +157,7 @@ void View::updateSlave(unsigned int i)
|
||||
slave._camera->setViewMatrix(_camera->getViewMatrix() * slave._viewOffset);
|
||||
}
|
||||
|
||||
slave._camera->inheritCullSettings(*_camera);
|
||||
if (slave._camera->getInheritanceMask() & osg::CullSettings::CLEAR_COLOR) slave._camera->setClearColor(_camera->getClearColor());
|
||||
slave._camera->inheritCullSettings(*_camera, slave._camera->getInheritanceMask());
|
||||
}
|
||||
|
||||
bool View::addSlave(osg::Camera* camera, const osg::Matrix& projectionOffset, const osg::Matrix& viewOffset, bool useMastersSceneData)
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <osg/Camera>
|
||||
#include <osg/ColorMask>
|
||||
#include <osg/CopyOp>
|
||||
#include <osg/CullSettings>
|
||||
#include <osg/DisplaySettings>
|
||||
#include <osg/GraphicsContext>
|
||||
#include <osg/GraphicsThread>
|
||||
@@ -637,6 +638,11 @@ BEGIN_OBJECT_REFLECTOR(osg::Camera)
|
||||
__bool__computeWorldToLocalMatrix__Matrix_R1__NodeVisitor_P1,
|
||||
"Transform method that must be defined to provide generic interface for scene graph traversals. ",
|
||||
"");
|
||||
I_Method2(void, inheritCullSettings, IN, const osg::CullSettings &, settings, IN, unsigned int, inheritanceMask,
|
||||
Properties::VIRTUAL,
|
||||
__void__inheritCullSettings__C5_CullSettings_R1__unsigned_int,
|
||||
"Inherit the local cull settings variable from specified CullSettings object, according to the inheritance mask. ",
|
||||
"");
|
||||
I_SimpleProperty(bool, AllowEventFocus,
|
||||
__bool__getAllowEventFocus,
|
||||
__void__setAllowEventFocus__bool);
|
||||
|
||||
Reference in New Issue
Block a user