From b4d397cfd7b6c47e071547133c32f0172db1eb1f Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 10 Jul 2012 15:50:46 +0000 Subject: [PATCH] Moved mask settings into ShadowSettings --- include/osgShadow/ShadowSettings | 32 +++++++++++++++++++++----------- include/osgShadow/ShadowedScene | 21 ++++++++++++--------- src/osgShadow/ShadowSettings.cpp | 4 ++++ src/osgShadow/ShadowedScene.cpp | 8 ++------ 4 files changed, 39 insertions(+), 26 deletions(-) diff --git a/include/osgShadow/ShadowSettings b/include/osgShadow/ShadowSettings index e2a928205..3e0ecb701 100644 --- a/include/osgShadow/ShadowSettings +++ b/include/osgShadow/ShadowSettings @@ -28,6 +28,12 @@ class OSGSHADOW_EXPORT ShadowSettings : public osg::Object META_Object(osgShadow, ShadowSettings); + void setReceivesShadowTraversalMask(unsigned int mask) { _receivesShadowTraversalMask = mask; } + unsigned int getReceivesShadowTraversalMask() const { return _receivesShadowTraversalMask; } + + void setCastsShadowTraversalMask(unsigned int mask) { _castsShadowTraversalMask = mask; } + unsigned int getCastsShadowTraversalMask() const { return _castsShadowTraversalMask; } + /** Set the LightNum of the light in the scene to assign a shadow for. * Default value is -1, which signifies that shadow technique should automatically select an active light * to assign a shadow, typically this will be the first active light found. */ @@ -103,20 +109,24 @@ class OSGSHADOW_EXPORT ShadowSettings : public osg::Object virtual ~ShadowSettings(); - int _lightNum; - unsigned int _baseShadowTextureUnit; - bool _useShadowMapTextureOverride; - osg::Vec2s _textureSize; - double _minimumShadowMapNearFarRatio; - ShadowMapProjectionHint _shadowMapProjectionHint; - double _perspectiveShadowMapCutOffAngle; + unsigned int _receivesShadowTraversalMask; + unsigned int _castsShadowTraversalMask; - unsigned int _numShadowMapsPerLight; - MultipleShadowMapHint _multipleShadowMapHint; + int _lightNum; + unsigned int _baseShadowTextureUnit; + bool _useShadowMapTextureOverride; + osg::Vec2s _textureSize; - ShaderHint _shaderHint; - bool _debugDraw; + double _minimumShadowMapNearFarRatio; + ShadowMapProjectionHint _shadowMapProjectionHint; + double _perspectiveShadowMapCutOffAngle; + + unsigned int _numShadowMapsPerLight; + MultipleShadowMapHint _multipleShadowMapHint; + + ShaderHint _shaderHint; + bool _debugDraw; }; diff --git a/include/osgShadow/ShadowedScene b/include/osgShadow/ShadowedScene index 9a70f752e..ed401a28f 100644 --- a/include/osgShadow/ShadowedScene +++ b/include/osgShadow/ShadowedScene @@ -37,12 +37,6 @@ class OSGSHADOW_EXPORT ShadowedScene : public osg::Group virtual void traverse(osg::NodeVisitor& nv); - void setReceivesShadowTraversalMask(unsigned int mask) { _receivesShadowTraversalMask = mask; } - unsigned int getReceivesShadowTraversalMask() const { return _receivesShadowTraversalMask; } - - void setCastsShadowTraversalMask(unsigned int mask) { _castsShadowTraversalMask = mask; } - unsigned int getCastsShadowTraversalMask() const { return _castsShadowTraversalMask; } - void setShadowSettings(ShadowSettings* ss); ShadowSettings* getShadowSettings() { return _shadowSettings.get(); } const ShadowSettings* getShadowSettings() const { return _shadowSettings.get(); } @@ -65,13 +59,22 @@ class OSGSHADOW_EXPORT ShadowedScene : public osg::Group * for all graphics contexts. */ virtual void releaseGLObjects(osg::State* = 0) const; + public: + + /** deprecated, moved to ShadowSettings.*/ + void setReceivesShadowTraversalMask(unsigned int mask) { if (_shadowSettings.valid()) _shadowSettings->setReceivesShadowTraversalMask(mask); } + /** deprecated, moved to ShadowSettings.*/ + unsigned int getReceivesShadowTraversalMask() const { return _shadowSettings.valid() ? _shadowSettings->getReceivesShadowTraversalMask() : 0xffffffff; } + + /** deprecated, moved to ShadowSettings.*/ + void setCastsShadowTraversalMask(unsigned int mask) { if (_shadowSettings.valid()) _shadowSettings->setCastsShadowTraversalMask(mask); } + /** deprecated, moved to ShadowSettings.*/ + unsigned int getCastsShadowTraversalMask() const { return _shadowSettings.valid() ? _shadowSettings->getCastsShadowTraversalMask() : 0xffffffff; } + protected: virtual ~ShadowedScene(); - unsigned int _receivesShadowTraversalMask; - unsigned int _castsShadowTraversalMask; - osg::ref_ptr _shadowSettings; osg::ref_ptr _shadowTechnique; diff --git a/src/osgShadow/ShadowSettings.cpp b/src/osgShadow/ShadowSettings.cpp index cf9c9b8db..54460ee22 100644 --- a/src/osgShadow/ShadowSettings.cpp +++ b/src/osgShadow/ShadowSettings.cpp @@ -16,6 +16,8 @@ using namespace osgShadow; ShadowSettings::ShadowSettings(): + _receivesShadowTraversalMask(0xffffffff), + _castsShadowTraversalMask(0xffffffff), _lightNum(-1), _baseShadowTextureUnit(1), _useShadowMapTextureOverride(true), @@ -33,6 +35,8 @@ ShadowSettings::ShadowSettings(): ShadowSettings::ShadowSettings(const ShadowSettings& ss, const osg::CopyOp& copyop): Object(ss,copyop), + _receivesShadowTraversalMask(ss._receivesShadowTraversalMask), + _castsShadowTraversalMask(ss._castsShadowTraversalMask), _lightNum(ss._lightNum), _baseShadowTextureUnit(ss._baseShadowTextureUnit), _useShadowMapTextureOverride(ss._useShadowMapTextureOverride), diff --git a/src/osgShadow/ShadowedScene.cpp b/src/osgShadow/ShadowedScene.cpp index 36234c055..99404882b 100644 --- a/src/osgShadow/ShadowedScene.cpp +++ b/src/osgShadow/ShadowedScene.cpp @@ -21,9 +21,7 @@ using namespace osgShadow; -ShadowedScene::ShadowedScene(ShadowTechnique* st): - _receivesShadowTraversalMask(0xffffffff), - _castsShadowTraversalMask(0xffffffff) +ShadowedScene::ShadowedScene(ShadowTechnique* st) { setNumChildrenRequiringUpdateTraversal(1); @@ -33,9 +31,7 @@ ShadowedScene::ShadowedScene(ShadowTechnique* st): } ShadowedScene::ShadowedScene(const ShadowedScene& ss, const osg::CopyOp& copyop): - osg::Group(ss,copyop), - _receivesShadowTraversalMask(ss._receivesShadowTraversalMask), - _castsShadowTraversalMask(ss._castsShadowTraversalMask) + osg::Group(ss,copyop) { setNumChildrenRequiringUpdateTraversal(getNumChildrenRequiringUpdateTraversal()+1);