Hi "Dark Zero",
Could you please use a human-readable name, so mailing list users can address you with a name?

Your code probably throws an exception cause you are modifying the scene graph while traversing it. Simply add your nodes to be removed to a list in your callback and remove them between frames. There are multiple ways of doing this, but for starters you might split the viewer.run into a loop calling

viewer.advance();
viewer.eventTraversal();
viewer.updateTraversal();
viewer.renderingTraversals();

and perform the removal from the scene-graph before the updateTraversal

Cheers
Sebastian
Hi,

There is a Geode whose Geometry is a ball with a MatrixTransform() assigned 
above it. It's callback function makes it falls. When the ball intersects with 
the ground, I hope to remove it from the scene.

The following code throws exception:


Code:

//inside the ball's callback

virtual void operator()(osg::Node* node ,osg::NodeVisitor* nv)
{
     using namespace osg;
     MatrixTransform* matrix_node = dynamic_cast<MatrixTransform*>(node);
     Matrix matrix = matrix_node->getMatrix();

     velocity += Vec3(0, 0, -0.002);

     matrix.postMultTranslate(velocity);

     matrix_node->setMatrix(matrix);

     Vec3 now_position = start_position * matrix;

     osgUtil::IntersectVisitor ivXY;

     osg::ref_ptr<osg::LineSegment> lineXY = new osg::LineSegment(now_position, 
now_position+velocity);

     ivXY.addLineSegment(lineXY);

     GAME.main_camera->m_pHostViewer->getSceneData()->accept(ivXY) ;
     if(ivXY.hits())
     {
         node->getParent(0)->removeChild(node);
     }
     return;
}




How to do it correctly? Thank you!

...

Cheers,
DarkZero

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=63915#63915





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to