Franclin Foping wrote:
I would like to turn a Drawable object into a Geometry counterpart in
order to retrieve its texture coordinates.
I have tried to use both the asGeometry method of the Drawable class
and the dynamic cast operator but both attempts ended up delivering a
NULL pointer. I am not sure if there is another way of doing it.
Here is a code snippet.
osg::Geode myGeode = new osg::Geode;
myGeode->addDrawable(new osg::ShapeDrawable(new
osg::Box(osg::Vec3(),1,1,1)));
osg::Drawable* myDrawable = myGeode->getDrawable(0);
osg::Geometry* myGeom = myDrawable->asGeometry(); //This returns NULL!
osg::Geometry* myGeom2 = dynamic_cast<osg::Geometry *>(myDrawable);
Unfortunately both myGeom and myGeom3 are both NULL at this point.
Sorry, but what you're trying to do is impossible, the class hierarchy isn't
setup that way.
What you have is:
- ShapeDrawable is-a Drawable, and
- Geometry is-a Drawable
and what you're attempting is to cast a ShapeDrawable to a Geometry. This can
never work since they don't have a parent-child relationship. The fact that
they're both derived from Drawable is irrelevant for what you're attempting.
Cheers!
/ulrich
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org