MakeFastGeometryVisitor: fix handling of Geometries that are directly in the scene graph not attached to a Geode
This commit is contained in:
parent
833f37ea57
commit
4a05caf4f7
@ -509,7 +509,7 @@ class OSGUTIL_EXPORT Optimizer
|
|||||||
CheckGeometryVisitor(Optimizer* optimizer=0):
|
CheckGeometryVisitor(Optimizer* optimizer=0):
|
||||||
BaseOptimizerVisitor(optimizer, CHECK_GEOMETRY) {}
|
BaseOptimizerVisitor(optimizer, CHECK_GEOMETRY) {}
|
||||||
|
|
||||||
virtual void apply(osg::Geode& geode) { checkGeode(geode); }
|
virtual void apply(osg::Geometry& geom);
|
||||||
|
|
||||||
void checkGeode(osg::Geode& geode);
|
void checkGeode(osg::Geode& geode);
|
||||||
|
|
||||||
@ -523,9 +523,7 @@ class OSGUTIL_EXPORT Optimizer
|
|||||||
MakeFastGeometryVisitor(Optimizer* optimizer=0):
|
MakeFastGeometryVisitor(Optimizer* optimizer=0):
|
||||||
BaseOptimizerVisitor(optimizer, MAKE_FAST_GEOMETRY) {}
|
BaseOptimizerVisitor(optimizer, MAKE_FAST_GEOMETRY) {}
|
||||||
|
|
||||||
virtual void apply(osg::Geode& geode) { checkGeode(geode); }
|
virtual void apply(osg::Geometry& geom);
|
||||||
|
|
||||||
void checkGeode(osg::Geode& geode);
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1732,39 +1732,25 @@ struct LessGeometryPrimitiveType
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void Optimizer::CheckGeometryVisitor::checkGeode(osg::Geode& geode)
|
void Optimizer::CheckGeometryVisitor::apply(osg::Geometry& geom)
|
||||||
{
|
{
|
||||||
if (isOperationPermissibleForObject(&geode))
|
if (isOperationPermissibleForObject(&geom))
|
||||||
{
|
{
|
||||||
for(unsigned int i=0;i<geode.getNumDrawables();++i)
|
|
||||||
{
|
|
||||||
osg::Geometry* geom = geode.getDrawable(i)->asGeometry();
|
|
||||||
if (geom && isOperationPermissibleForObject(geom))
|
|
||||||
{
|
|
||||||
#ifdef GEOMETRYDEPRECATED
|
#ifdef GEOMETRYDEPRECATED
|
||||||
geom1829
|
geom
|
||||||
->computeCorrectBindingsAndArraySizes();
|
.computeCorrectBindingsAndArraySizes();
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Optimizer::MakeFastGeometryVisitor::checkGeode(osg::Geode& geode)
|
void Optimizer::MakeFastGeometryVisitor::apply(osg::Geometry& geom)
|
||||||
{
|
{
|
||||||
// GeometryDeprecated CAN REMOVED
|
// GeometryDeprecated CAN REMOVED
|
||||||
if (isOperationPermissibleForObject(&geode))
|
if (isOperationPermissibleForObject(&geom))
|
||||||
{
|
{
|
||||||
for(unsigned int i=0;i<geode.getNumDrawables();++i)
|
if (geom.checkForDeprecatedData())
|
||||||
{
|
{
|
||||||
osg::Geometry* geom = geode.getDrawable(i)->asGeometry();
|
geom.fixDeprecatedData();
|
||||||
if (geom && isOperationPermissibleForObject(geom))
|
|
||||||
{
|
|
||||||
if (geom->checkForDeprecatedData())
|
|
||||||
{
|
|
||||||
geom->fixDeprecatedData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user