(Sorry, couldn't figure out how to be specific but concise with the title)
I created a class (called Test) that derived from PositionAttitudeTransform
which would control the position of a shape (so a geode) in the scene. I wanted
to then update it by setting that class as the geode's user data, and then
having it update via a callback (which is irrelevant to the problem (as far as
I can see)).
However, when I add an instance of Test as geode's user data a stack overflow
occurs when the viewer calls realize(). No stack overflow if I don't. I see
that addChild() is virtual, but I don't know if that would cause problems - I'm
still rather a novice to OSG and C++. Can anyone explain the problem?
Here's the code for Test:
Code:
#include <osg/PositionAttitudeTransform>
class Test : public osg::PositionAttitudeTransform
{
public:
Test(osg::ref_ptr<osg::Node> geode) { addChild(geode); }
~Test() { }
};
And here's main:
Code:
int main(int argc, const char** argv)
{
osg::ref_ptr<osg::Group> root = new osg::Group();
// Create viewer
osgViewer::Viewer viewer;
viewer.setSceneData(root);
osg::ref_ptr<osg::Geode> geode = new osg::Geode();
Test* t = new Test(geode);
root->addChild(t);
geode->setUserData(t);
// Create camera
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
// Run scene
viewer.setUpViewInWindow(0, 0, 800, 600);
viewer.realize();
while (!viewer.done())
{
// Step the graphics display
viewer.frame();
}
return 0;
}
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=45999#45999
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org