[Python, C++] Behavior of NodeData.Init() changed with R25

Dear Development Community,

we want to inform you that R25 plugin interfaces derived from NodeData that implement Init() are affected by a currently undocumented change in behavior. Affected is any version of both the Python and C++ R25 SDK. The SDK for S24 and lower are not affected.

The change in behavior entails:

  • The Asset API will create multiple instances of your plugin when a parameter of an instance of your plugin has been changed. This will cause NodeData.Init() to be called multiple times, once for each instance.
  • The argument node passed to these functions is not the always the node representing the plugin in the respective manager, e.g., the object in the object manager, as the underlying Asset API will now also check presets assets with the respective Init() method of your plugin interface.

This does not mean that parameter initlization will not work in Init(), it does, but that one cannot rely anymore on node in Init() to check for the identity of the object that has been (re)allocated.

Other methods of NodeData derived plugins like Message, GetVirtualObjects, Execute, etc., which also get passed in the node representing the plugin in a manager, are not affected and will receive the correct node.

Thank you for your understanding,
The SDK-Team