Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

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

    Scheduled Pinned Locked Moved News & Information
    newssdk
    1 Posts 1 Posters 625 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ferdinandF Offline
      ferdinand
      last edited by ferdinand

      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

      MAXON SDK Specialist
      developers.maxon.net

      1 Reply Last reply Reply Quote 0
      • First post
        Last post