From ff35465a330bfa592b40f555563afd4563c37f14 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 25 Aug 2008 10:20:20 +0000 Subject: [PATCH] Moved _stateset = new StateSet instances to setStateSet(new StateSet) to make sure the wiring up of the StateSet parents is done consistently --- src/osg/ClipNode.cpp | 6 ++++-- src/osg/LightSource.cpp | 5 +++-- src/osg/StateSet.cpp | 6 ++++++ src/osg/TexGenNode.cpp | 5 +++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/osg/ClipNode.cpp b/src/osg/ClipNode.cpp index 1f2524608..6b3b27d56 100644 --- a/src/osg/ClipNode.cpp +++ b/src/osg/ClipNode.cpp @@ -19,13 +19,14 @@ using namespace osg; ClipNode::ClipNode(): _value(StateAttribute::ON) { - _stateset = new StateSet; + setStateSet(new StateSet); } ClipNode::ClipNode(const ClipNode& cn, const CopyOp& copyop): Group(cn,copyop), _value(cn._value) { + setStateSet(new StateSet); for(ClipPlaneList::const_iterator itr=cn._planes.begin(); itr!=cn._planes.end(); ++itr) @@ -136,7 +137,8 @@ void ClipNode::setStateSetModes(StateSet& stateset,StateAttribute::GLModeValue v void ClipNode::setLocalStateSetModes(StateAttribute::GLModeValue value) { _value = value; - if (!_stateset) _stateset = new StateSet; + if (!_stateset) setStateSet(new StateSet); + setStateSetModes(*_stateset,value); } diff --git a/src/osg/LightSource.cpp b/src/osg/LightSource.cpp index 451acab20..d12d84bb4 100644 --- a/src/osg/LightSource.cpp +++ b/src/osg/LightSource.cpp @@ -20,7 +20,7 @@ LightSource::LightSource(): { // switch off culling of light source nodes by default. setCullingActive(false); - _stateset = new StateSet; + setStateSet(new StateSet); _light = new Light; } @@ -52,7 +52,8 @@ void LightSource::setStateSetModes(StateSet& stateset,StateAttribute::GLModeValu void LightSource::setLocalStateSetModes(StateAttribute::GLModeValue value) { - if (!_stateset) _stateset = new StateSet; + if (!_stateset) setStateSet(new StateSet); + _stateset->clear(); setStateSetModes(*_stateset,value); } diff --git a/src/osg/StateSet.cpp b/src/osg/StateSet.cpp index e89ffaafe..bf62b3e12 100644 --- a/src/osg/StateSet.cpp +++ b/src/osg/StateSet.cpp @@ -1714,15 +1714,20 @@ void StateSet::setEventCallback(Callback* ac) _eventCallback = ac; + osg::notify(osg::NOTICE)<<"StateSet::setEventCallback("<(*itr); if (drawable) { + osg::notify(osg::NOTICE)<<" parent is a drawable("<<*itr<<")"<setNumChildrenRequiringUpdateTraversal(drawable->getNumChildrenRequiringUpdateTraversal()+delta); } else @@ -1730,6 +1735,7 @@ void StateSet::setEventCallback(Callback* ac) osg::Node* node = dynamic_cast(*itr); if (node) { + osg::notify(osg::NOTICE)<<" parent is a node("<<*itr<<")"<setNumChildrenRequiringEventTraversal(node->getNumChildrenRequiringEventTraversal()+delta); } } diff --git a/src/osg/TexGenNode.cpp b/src/osg/TexGenNode.cpp index f1c62e645..eeb7c480b 100644 --- a/src/osg/TexGenNode.cpp +++ b/src/osg/TexGenNode.cpp @@ -22,7 +22,7 @@ TexGenNode::TexGenNode(): _textureUnit = 0; _value = StateAttribute::ON; - _stateset = new StateSet; + setStateSet(new StateSet); _texgen = new TexGen; } @@ -33,6 +33,7 @@ TexGenNode::TexGenNode(const TexGenNode& cn, const CopyOp& copyop): _texgen(static_cast(copyop(cn._texgen.get()))), _referenceFrame(cn._referenceFrame) { + setStateSet(new StateSet); } TexGenNode::TexGenNode(TexGen *texgen): @@ -43,7 +44,7 @@ TexGenNode::TexGenNode(TexGen *texgen): _textureUnit = 0; _value = StateAttribute::ON; - _stateset = new StateSet; + setStateSet(new StateSet); _texgen = texgen; }