Here's a quick overview of the implementation required for a Custom ICENode.
Register the ICENode in the XSILoadPlugin callback. This is where you define the input/output ports.
Implement the processing algorithm in the Evaluate callback which gives you access to the ICENode evaluation input/output data, number of threads allocated, number of elements to process, etc.
Implement the BeginEvaluate and EndEvaluate callbacks if you need to store user data. These callbacks are called at each frame being evaluated, you can use these callbacks to store data that change over time.
You may also choose to implement the Init and Term callbacks if you want to store user data when the ICENode is instantiated.
The Custom ICENode Wizard is strongly recommended for generating the plug-in code. For more information, see Custom ICENode Wizard.