Replaced dynamic_cast<*Callback> with as*Callback() implementation/usage.

This commit is contained in:
Robert Osfield
2016-01-18 19:04:28 +00:00
parent 48225171e0
commit 340615de55
9 changed files with 192 additions and 109 deletions

View File

@@ -13,6 +13,8 @@
#include <osg/Node>
#include <osg/NodeVisitor>
#include <osg/ScriptEngine>
#include <osg/RenderInfo>
#include <osg/Drawable>
using namespace osg;
@@ -122,3 +124,41 @@ bool UniformCallback::run(osg::Object* object, osg::Object* data)
return traverse(object, data);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
bool DrawableUpdateCallback::run(osg::Object* object, osg::Object* data)
{
osg::Drawable* drawable = object->asDrawable();
osg::NodeVisitor* nv = data->asNodeVisitor();
if (drawable && nv)
{
update(nv, drawable);
return true;
}
else
{
return traverse(object, data);
}
}
bool DrawableEventCallback::run(osg::Object* object, osg::Object* data)
{
osg::Drawable* drawable = object->asDrawable();
osg::NodeVisitor* nv = data->asNodeVisitor();
if (drawable && nv)
{
event(nv, drawable);
return true;
}
else
{
return traverse(object, data);
}
}
bool DrawableCullCallback::cull(osg::NodeVisitor* nv, osg::Drawable* drawable, osg::RenderInfo* renderInfo) const
{
return cull(nv, drawable, renderInfo? renderInfo->getState():0);
}