Replaced dynamoc_cast<osg::CullStack*> with asCullStack() to improve performance of AutoTransform, screen size based LOD and PagedLOD.
This commit is contained in:
parent
92092a56ae
commit
a95d66a587
@ -52,6 +52,7 @@ class Camera;
|
||||
class CameraView;
|
||||
class Drawable;
|
||||
class Geometry;
|
||||
class CullStack;
|
||||
|
||||
|
||||
|
||||
@ -149,6 +150,13 @@ class OSG_EXPORT NodeVisitor : public virtual Object
|
||||
* Equivalent to dynamic_cast<const osgUtil::IntersectionVisitor*>(this).*/
|
||||
virtual const osgUtil::IntersectionVisitor* asIntersectionVisitor() const { return 0; }
|
||||
|
||||
/** Convert 'this' into a osg::CullStack pointer if Object is a osg::CullStack, otherwise return 0.
|
||||
* Equivalent to dynamic_cast<osg::CullStack*>(this).*/
|
||||
virtual osg::CullStack* asCullStack() { return 0; }
|
||||
|
||||
/** convert 'const this' into a const osg::CullStack pointer if Object is a osg::CullStack, otherwise return 0.
|
||||
* Equivalent to dynamic_cast<const osg::CullStack*>(this).*/
|
||||
virtual const osg::CullStack* asCullStack() const { return 0; }
|
||||
|
||||
|
||||
|
||||
|
@ -67,6 +67,15 @@ class OSGUTIL_EXPORT CullVisitor : public osg::NodeVisitor, public osg::CullStac
|
||||
* Equivalent to dynamic_cast<const osgUtil::CullVisitor*>(this).*/
|
||||
virtual const osgUtil::CullVisitor* asCullVisitor() const { return this; }
|
||||
|
||||
/** Convert 'this' into a osg::CullStack pointer if Object is a osg::CullStack, otherwise return 0.
|
||||
* Equivalent to dynamic_cast<osg::CullStack*>(this).*/
|
||||
virtual osg::CullStack* asCullStack() { return static_cast<osg::CullStack*>(this); }
|
||||
|
||||
/** convert 'const this' into a const osg::CullStack pointer if Object is a osg::CullStack, otherwise return 0.
|
||||
* Equivalent to dynamic_cast<const osg::CullStack*>(this).*/
|
||||
virtual const osg::CullStack* asCullStack() const { return static_cast<const osg::CullStack*>(this); }
|
||||
|
||||
|
||||
using osg::NodeVisitor::clone;
|
||||
|
||||
/** Create a shallow copy of the CullVisitor, used by CullVisitor::create() to clone the prototype. */
|
||||
|
@ -140,7 +140,7 @@ osg::Matrixd AutoTransform::computeMatrix(const osg::NodeVisitor* nv) const
|
||||
Quat rotation = _rotation;
|
||||
osg::Vec3d scale = _scale;
|
||||
|
||||
const CullStack* cs = dynamic_cast<const CullStack*>(nv);
|
||||
const CullStack* cs = nv ? nv->asCullStack() : 0;
|
||||
if (cs)
|
||||
{
|
||||
osg::Vec3d eyePoint = cs->getEyeLocal();
|
||||
|
@ -51,7 +51,7 @@ void LOD::traverse(NodeVisitor& nv)
|
||||
}
|
||||
else
|
||||
{
|
||||
osg::CullStack* cullStack = dynamic_cast<osg::CullStack*>(&nv);
|
||||
osg::CullStack* cullStack = nv.asCullStack();
|
||||
if (cullStack && cullStack->getLODScale())
|
||||
{
|
||||
required_range = cullStack->clampedPixelSize(getBound()) / cullStack->getLODScale();
|
||||
|
@ -150,7 +150,7 @@ void PagedLOD::traverse(NodeVisitor& nv)
|
||||
}
|
||||
else
|
||||
{
|
||||
osg::CullStack* cullStack = dynamic_cast<osg::CullStack*>(&nv);
|
||||
osg::CullStack* cullStack = nv.asCullStack();
|
||||
if (cullStack && cullStack->getLODScale()>0.0f)
|
||||
{
|
||||
required_range = cullStack->clampedPixelSize(getBound()) / cullStack->getLODScale();
|
||||
|
Loading…
Reference in New Issue
Block a user