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!
Thanks