#ifndef COMPONENTS_SCENEUTIL_SHADOW_H #define COMPONENTS_SCENEUTIL_SHADOW_H #include namespace osg { class StateSet; class Group; } namespace osgShadow { class ShadowSettings; class ShadowedScene; } namespace SceneUtil { class MWShadowTechnique; class ShadowManager { public: static void disableShadowsForStateSet(osg::ref_ptr stateSet); static Shader::ShaderManager::DefineMap getShadowsDisabledDefines(); ShadowManager(osg::ref_ptr sceneRoot, osg::ref_ptr rootNode, unsigned int outdoorShadowCastingMask, unsigned int indoorShadowCastingMask, unsigned int worldMask, Shader::ShaderManager& shaderManager); ~ShadowManager(); void setupShadowSettings(Shader::ShaderManager& shaderManager); Shader::ShaderManager::DefineMap getShadowDefines(); void enableIndoorMode(); void enableOutdoorMode(); protected: bool mEnableShadows; osg::ref_ptr mShadowedScene; osg::ref_ptr mShadowSettings; osg::ref_ptr mShadowTechnique; unsigned int mOutdoorShadowCastingMask; unsigned int mIndoorShadowCastingMask; }; } #endif // COMPONENTS_SCENEUTIL_SHADOW_H