Skip to content

Commit f42e0ba

Browse files
r-flashcarson-katri
authored andcommitted
Fix some cases of node name collisions
Some compositor and texture nodes share names with the geometry nodes versions. This change sorts them so that the geometry ones are registered last, overriding the incorrect ones. The Math node is handled separately, because here the ShaderNodeMath is the correct one to use, for some reason.
1 parent 258a7c5 commit f42e0ba

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

api/node_mapper.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,16 @@ class NodeNamespace: pass
107107
registered_nodes.add(node_type)
108108

109109
denylist = {'filter'} # some nodes should be excluded.
110+
class_denylist = {'CompositorNodeMath', 'TextureNodeMath'}
111+
node_types_to_register = []
110112
for node_type_name in dir(bpy.types):
111113
node_type = getattr(bpy.types, node_type_name)
112114
if isinstance(node_type, type) and issubclass(node_type, bpy.types.Node):
113-
if node_type.is_registered_node_type() and node_type.bl_rna.name.lower() not in denylist:
114-
register_node(node_type)
115+
if node_type.is_registered_node_type() and node_type.bl_rna.name.lower() not in denylist and node_type.__name__ not in class_denylist:
116+
node_types_to_register.append(node_type)
117+
node_types_to_register.sort(key=lambda node_type: node_type.__name__.startswith("GeometryNode"))
118+
for node_type in node_types_to_register:
119+
register_node(node_type)
115120

116121
def create_documentation():
117122
temp_node_group = bpy.data.node_groups.new('temp_node_group', 'GeometryNodeTree')
@@ -342,4 +347,4 @@ def transfer(self, attribute: Type, **kwargs) -> Type: return Type()
342347

343348
def create_docs():
344349
create_documentation()
345-
bpy.app.timers.register(create_docs)
350+
bpy.app.timers.register(create_docs)

0 commit comments

Comments
 (0)