How To Extend: GeometryNodeCustomGroup

Quick update,

So, I’ve played around with this more today and found a solution to my issue.

As mentioned, I’ve followed the examples of @BD3D (Extra Nodes), and I’ve updated the “update_node” method from:

def update_node(msg, idname):
    for n in [
            n for ng in bpy.data.node_groups if (msg in ng) for n in ng.nodes
            if (n.bl_idname == idname)
    ]:
        n.update()

    return None

To:

def update_node(msg, idname):
    for n in [
            n for ng in bpy.data.node_groups for n in ng.nodes
            if (n.bl_idname == idname)
    ]:
        n.update()

    return None

I simply removed any filtering to do with the node group’s handler flag, eg: “extra_node_camera_info_update_needed”, and just updated the node by its bl_idname.

This has allowed - with regards to my original example - “NodeGroupB” to receive its update signal during frame changes, even when it’s a child of “NodeGroupA” (or other). It now seems that all signals are being received.

Some of the approaches I’ve currently taken for the add-on I’m currently building may be of benefit to others. For one; as I’ve created the beginnings of a “Core” library with classes and helpers which will help me during future add-on development. So I’ll continue pushing out to this thread as I learn more about extending the GeometryNodeCustomGroup class, as well as generally discussing things such as: general project structure, tooling, approaches, and more when concerning general Blender add-on development. Who knows - I may eventually release my “Core” library!

This could be fun! :slightly_smiling_face:

Thanks

1 Like