One of the most important aspects of Inventor is the ability to program new objects and operations as extensions to the toolkit. One way to extend the set of objects provided by Inventor is to derive new classes from existing ones. See The Inventor Toolmaker for specific examples of creating new classes.
Another way to include new features in Inventor is by using callback functions, which provide an easy mechanism for introducing specialized behavior into a scene graph or prototyping new nodes without subclassing. A callback function is a user-written function that is called under certain conditions. Callback functions provided by Inventor include the following:
SoCallback( C++ | Java | .NET )—a generic node in the database that provides a callback function for all database actions (see Chapter 28, Using Open Inventor with OpenGL)
SoCallbackAction( C++ | Java | .NET )—generic traversal of the database with a callback function at each node (see Chapter 8, Applying Actions)
SoEventCallback( C++ | Java | .NET )—a node in the database that calls a user-defined function when it receives an event (see Chapter 10, Handling Events and Selection)
SoSelection( C++ | Java | .NET )—selection callback node (see Chapter 10, Handling Events and Selection)
Manipulators—provide callback functions for event processing (see Chapter 17, Draggers and Manipulators)
SoXt( C++ ) components—support their own callback functions when a change occurs (see Chapter 18, Open Inventor Component Library).