[Open Inventor]
Context
SoHandleEventAction is used to allow nodes in a scene graph to handle input events (for example, from a mouse or keyboard). Manipulator, dragger, and selection nodes respond to and process these events. Most group nodes simply pass the event to their children, while most other nodes types ignore the action.
The SoEventCallback node invokes a callback (or delegate) method when it is traversed by a handle event action processing a specific type of event (for example, a key press event). This mechanism represents the primary method for handling event input in Open Inventor. The following section explains what operations are permitted within such a callback.
Description
You must not modify any part of the scene graph that has already been traversed during a SoEventCallback. Doing so leads to undefined behavior.
More generally, you may modify any part of the scene graph that does not affect the path of the SoEventCallback, once the handle event action stops at the end of the SoEventCallback traversal.
For example, in a scene graph structured as follows:
- Do not modify the red sections during the SoHandleEventAction.
- The green sections may be modified, provided that the SoHandleEventAction stops at the SoEventCallback node.
For all other types of scene graph modifications that fall outside this use case, use a SoOneShotSensor to ensure safe and consistent updates.
