Introduced new osg::Object::DataVariance type of UNSPECIFIED, and changed the deafult

values of DataVariance to UNSPECIFIED to all types.
This commit is contained in:
Robert Osfield
2007-02-14 13:18:58 +00:00
parent 953899d0e2
commit 07411f3246
9 changed files with 49 additions and 35 deletions

View File

@@ -80,8 +80,6 @@ bool osg::isTextureMode(StateAttribute::GLMode mode)
StateSet::StateSet()
{
setDataVariance(osg::Object::STATIC);
_renderingHint = DEFAULT_BIN;
_numChildrenRequiringUpdateTraversal = 0;
@@ -180,17 +178,18 @@ void StateSet::computeDataVariance()
}
// run attribute callbacks
for(AttributeList::iterator itr=_attributeList.begin();
itr!=_attributeList.end();
++itr)
{
if (itr->second.first->getUpdateCallback() ||
itr->second.first->getEventCallback() ||
itr->second.first->getDataVariance()==DYNAMIC)
if (itr->second.first->getDataVariance()==UNSPECIFIED &&
(itr->second.first->getUpdateCallback() || itr->second.first->getEventCallback()))
{
dynamic = true;
itr->second.first->setDataVariance(DYNAMIC);
}
if (itr->second.first->getDataVariance()==DYNAMIC) dynamic = true;
}
// run texture attribute callbacks.
@@ -201,13 +200,13 @@ void StateSet::computeDataVariance()
itr!=attributeList.end();
++itr)
{
if (itr->second.first->getUpdateCallback() ||
itr->second.first->getEventCallback() ||
itr->second.first->getDataVariance()==DYNAMIC)
if (itr->second.first->getDataVariance()==UNSPECIFIED &&
(itr->second.first->getUpdateCallback() || itr->second.first->getEventCallback()))
{
itr->second.first->setDataVariance(DYNAMIC);
dynamic = true;
itr->second.first->setDataVariance(DYNAMIC);
}
if (itr->second.first->getDataVariance()==DYNAMIC) dynamic = true;
}
}
@@ -217,16 +216,17 @@ void StateSet::computeDataVariance()
uitr != _uniformList.end();
++uitr)
{
if (uitr->second.first->getUpdateCallback() ||
uitr->second.first->getEventCallback() ||
uitr->second.first->getDataVariance()==DYNAMIC)
if (uitr->second.first->getDataVariance()==UNSPECIFIED &&
(uitr->second.first->getUpdateCallback() || uitr->second.first->getEventCallback()))
{
uitr->second.first->setDataVariance(DYNAMIC);
dynamic = true;
}
if (uitr->second.first->getDataVariance()==DYNAMIC) dynamic = true;
}
#if 0
if (dynamic)
{
osg::notify(osg::NOTICE)<<"StateSet::computeDataVariance setting to DYNAMIC"<<std::endl;
@@ -237,7 +237,10 @@ void StateSet::computeDataVariance()
}
#endif
setDataVariance(dynamic ? DYNAMIC : STATIC);
if (getDataVariance()==UNSPECIFIED)
{
setDataVariance(dynamic ? DYNAMIC : STATIC);
}
}