Added a ShadowTechniue::setShadowedScene() virtual method to make it possible to implement techniques as fascades to other techniques
This commit is contained in:
@@ -27,7 +27,7 @@ namespace osgShadow {
|
||||
// forward declare ShadowedScene
|
||||
class ShadowedScene;
|
||||
|
||||
/** ShadowedScene provides a mechanism for decorating a scene that the needs to have shadows cast upon it.*/
|
||||
/** ShadowTechnique is the base class for different shadow implementations.*/
|
||||
class OSGSHADOW_EXPORT ShadowTechnique : public osg::Object
|
||||
{
|
||||
public :
|
||||
@@ -39,6 +39,8 @@ class OSGSHADOW_EXPORT ShadowTechnique : public osg::Object
|
||||
virtual const char* libraryName() const { return "osgShadow"; }\
|
||||
virtual const char* className() const { return "ShadowTechnique"; }
|
||||
|
||||
virtual void setShadowedScene(ShadowedScene* ss);
|
||||
|
||||
ShadowedScene* getShadowedScene() { return _shadowedScene; }
|
||||
|
||||
const ShadowedScene* getShadowedScene() const { return _shadowedScene; }
|
||||
|
||||
@@ -48,6 +48,11 @@ ShadowTechnique::~ShadowTechnique()
|
||||
{
|
||||
}
|
||||
|
||||
void ShadowTechnique::setShadowedScene(ShadowedScene* ss)
|
||||
{
|
||||
_shadowedScene = ss;
|
||||
}
|
||||
|
||||
void ShadowTechnique::init()
|
||||
{
|
||||
OSG_NOTICE<<className()<<"::init() not implemented yet"<<std::endl;
|
||||
|
||||
@@ -80,14 +80,14 @@ void ShadowedScene::setShadowTechnique(ShadowTechnique* technique)
|
||||
if (_shadowTechnique.valid())
|
||||
{
|
||||
_shadowTechnique->cleanSceneGraph();
|
||||
_shadowTechnique->_shadowedScene = 0;
|
||||
_shadowTechnique->setShadowedScene(0);
|
||||
}
|
||||
|
||||
_shadowTechnique = technique;
|
||||
|
||||
if (_shadowTechnique.valid())
|
||||
{
|
||||
_shadowTechnique->_shadowedScene = this;
|
||||
_shadowTechnique->setShadowedScene(this);
|
||||
_shadowTechnique->dirty();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user