Added asUpdate/Cull/EventVisitor and asCamera/asDrawable to osg::Object and usage of these within the code base to avoid dynamic_cast<> usage.
This commit is contained in:
@@ -916,7 +916,8 @@ void CompositeViewer::reprojectPointerData(osgGA::GUIEventAdapter& source_event,
|
||||
|
||||
dest_event.setMouseYOrientationAndUpdateCoords(osgGA::GUIEventAdapter::Y_INCREASING_UPWARDS);
|
||||
|
||||
osg::Camera* camera = (source_event.getNumPointerData()>=2) ? dynamic_cast<osg::Camera*>(source_event.getPointerData(1)->object.get()) : 0;
|
||||
osg::Object* object = (source_event.getNumPointerData()>=2) ? source_event.getPointerData(1)->object.get() : 0;
|
||||
osg::Camera* camera = object ? object->asCamera() : 0;
|
||||
osg::Viewport* viewport = camera ? camera->getViewport() : 0;
|
||||
|
||||
if (!viewport) return;
|
||||
@@ -1030,7 +1031,8 @@ void CompositeViewer::eventTraversal()
|
||||
}
|
||||
|
||||
osgGA::PointerData* pd = event->getNumPointerData()>0 ? event->getPointerData(event->getNumPointerData()-1) : 0;
|
||||
osg::Camera* camera = pd ? dynamic_cast<osg::Camera*>(pd->object.get()) : 0;
|
||||
osg::Object* object = pd ? pd->object.get() : 0;
|
||||
osg::Camera* camera = object ? object->asCamera() : 0;
|
||||
osgViewer::View* view = camera ? dynamic_cast<osgViewer::View*>(camera->getView()) : 0;
|
||||
|
||||
if (!view)
|
||||
|
||||
@@ -118,7 +118,7 @@ struct KeystoneUpdateCallback : public osg::DrawableUpdateCallback
|
||||
/** do customized update code.*/
|
||||
virtual void update(osg::NodeVisitor*, osg::Drawable* drawable)
|
||||
{
|
||||
update(dynamic_cast<osg::Geometry*>(drawable));
|
||||
update(drawable->asGeometry());
|
||||
}
|
||||
|
||||
void update(osg::Geometry* geometry)
|
||||
@@ -418,8 +418,8 @@ osg::Vec2d KeystoneHandler::incrementScale(const osgGA::GUIEventAdapter& ea) con
|
||||
|
||||
bool KeystoneHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& /*aa*/, osg::Object* obj, osg::NodeVisitor* /*nv*/)
|
||||
{
|
||||
osg::Camera* camera = dynamic_cast<osg::Camera*>(obj);
|
||||
osg::Viewport* viewport = camera ? camera->getViewport() : 0;
|
||||
osg::Camera* camera = obj ? obj->asCamera() : 0;
|
||||
osg::Viewport* viewport = camera ? camera->getViewport() : 0;
|
||||
|
||||
if (!viewport) return false;
|
||||
|
||||
|
||||
@@ -908,7 +908,7 @@ void Renderer::operator () (osg::Object* object)
|
||||
osg::GraphicsContext* context = dynamic_cast<osg::GraphicsContext*>(object);
|
||||
if (context) operator()(context);
|
||||
|
||||
osg::Camera* camera = dynamic_cast<osg::Camera*>(object);
|
||||
osg::Camera* camera =object->asCamera();
|
||||
if (camera) cull();
|
||||
}
|
||||
|
||||
|
||||
@@ -1014,7 +1014,7 @@ bool View::computeIntersections(const osgGA::GUIEventAdapter& ea, osgUtil::LineS
|
||||
if (ea.getNumPointerData()>=1)
|
||||
{
|
||||
const osgGA::PointerData* pd = ea.getPointerData(ea.getNumPointerData()-1);
|
||||
const osg::Camera* camera = dynamic_cast<const osg::Camera*>(pd->object.get());
|
||||
const osg::Camera* camera = pd->object.valid() ? pd->object->asCamera() : 0;
|
||||
if (camera)
|
||||
{
|
||||
return computeIntersections(camera, osgUtil::Intersector::PROJECTION, pd->getXnormalized(), pd->getYnormalized(), intersections, traversalMask);
|
||||
@@ -1030,7 +1030,7 @@ bool View::computeIntersections(const osgGA::GUIEventAdapter& ea, const osg::Nod
|
||||
if (ea.getNumPointerData()>=1)
|
||||
{
|
||||
const osgGA::PointerData* pd = ea.getPointerData(ea.getNumPointerData()-1);
|
||||
const osg::Camera* camera = dynamic_cast<const osg::Camera*>(pd->object.get());
|
||||
const osg::Camera* camera = pd->object.valid() ? pd->object->asCamera() : 0;
|
||||
if (camera)
|
||||
{
|
||||
return computeIntersections(camera, osgUtil::Intersector::PROJECTION, pd->getXnormalized(), pd->getYnormalized(), nodePath, intersections, traversalMask);
|
||||
|
||||
@@ -849,7 +849,8 @@ void Viewer::reprojectPointerData(osgGA::GUIEventAdapter& source_event, osgGA::G
|
||||
|
||||
dest_event.setMouseYOrientationAndUpdateCoords(osgGA::GUIEventAdapter::Y_INCREASING_UPWARDS);
|
||||
|
||||
osg::Camera* camera = (source_event.getNumPointerData()>=2) ? dynamic_cast<osg::Camera*>(source_event.getPointerData(1)->object.get()) : 0;
|
||||
osg::Object* object = (source_event.getNumPointerData()>=2) ? source_event.getPointerData(1)->object.get() : 0;
|
||||
osg::Camera* camera = object ? object->asCamera() : 0;
|
||||
osg::Viewport* viewport = camera ? camera->getViewport() : 0;
|
||||
|
||||
if (!viewport) return;
|
||||
|
||||
Reference in New Issue
Block a user