Softimage SDK Programmer's Guide > Customizing with the SDK > Custom ICENodes >

# Processing phases

The processing of custom ICENodes is done in several phases, where a specific callback function is assigned to each phase. Each callback takes a ICENodeContext object as argument, which is used to access the required data for processing the phase:

- BeginEvaluate

  This callback is called during a single-threaded phase where memory is usually allocated in preparation for the multi-threaded evaluation phase. This callback is optional. For example, we can use this callback to attach some pre-thread data to a node.

- Evaluate

  This callback must be implemented for each registered ICENode. The evaluation phase can be called in single-threaded or in multi-threaded context depending on the threading processing mode in use. For more information, see Handling Port Polymorphism.

- EndEvaluate

  This callback is a single-threaded task for freeing up memory, cleaning resources,or anything required to undo the work performed in BeginEvaluate. This callback is also optional.

- SubmitEvaluationPhaseInfo

  This callback is required in the multi-phase evaluation mode for specifying the ports to be pulled for the current evaluation phase.