[osg-users] modify children in node callback?

Thrall, Bryan bryan.thrall at flightsafety.com
Mon Mar 2 13:00:48 PST 2009


Brian R Hill wrote on Monday, March 02, 2009 2:29 PM:
> You can't modify the hierarchy during an active traversal - this will
mess
> up the traversal. You need to cache your updates and perform them
between
> traversals.

Changes to the scenegraph should be made during the update traversal
(so, inside an UpdateCallback), which is single-threaded so it is safe.
The easiest way to prevent certain nodes from being traversed is to
modify their node mask (the Camera also needs its traversal mask set so
it will ignore these nodes).

The main problem with removing/adding nodes is invalidating iterators,
so I think it should be safe to add or remove children of the node
currently being visited in the update pass; at the point of the
UpdateCallback, I wouldn't expect any iterators to be iterating over
that node's child list.

> -----osg-users-bounces at lists.openscenegraph.org wrote: -----
> 
> To: OpenSceneGraph Users <osg-users at lists.openscenegraph.org>
> From: Cory Riddell <cory at codeware.com>
> Sent by: osg-users-bounces at lists.openscenegraph.org
> Date: 03/02/2009 02:45PM
> Subject: [osg-users] modify children in node callback?
> 
> In general, is it ok to modify child nodes in a node callback method?
> That is, children of the node for which the callback was called?
> 
> I assume it must be. If not, how do you add or remove nodes of a scene
> graph while running?
> 
> Cory
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
>
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
>
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g



-- 
Bryan Thrall
FlightSafety International
bryan.thrall at flightsafety.com



More information about the osg-users mailing list