Quellcode durchsuchen

ensure schema does not duplicate autogen nodes

Joseph Brandenburg vor 5 Monaten
Ursprung
Commit
e7c980f96b
1 geänderte Dateien mit 14 neuen und 10 gelöschten Zeilen
  1. 14 10
      schema_solve.py

+ 14 - 10
schema_solve.py

@@ -209,14 +209,15 @@ class SchemaSolver:
             unique_name = "".join([
                 ui_link.to_socket.node.name+self.index_str(),
                 ui_link.from_socket.name, ui_link.from_socket.identifier,
-                "==>", ui_link.to_socket.name, ui_link.to_socket.identifier,])
+                "==>", ui_link.to_socket.name, ui_link.to_socket.identifier,],)
             signature = ("MANTIS_AUTOGENERATED", *self.tree_path_names[1:-1], unique_name)
-            from_node = frame_mantis_nodes.get(signature)
+            from_node = self.all_nodes.get(signature)
             if not from_node:
                 from_node = autogen_node(self.node.base_tree, ui_link.from_socket, 
                                 signature=signature, mContext=self.node.mContext)
                 from_node.parameters = {ui_link.from_socket.name:index}
                 frame_mantis_nodes[signature]=from_node; self.solved_nodes[signature]=from_node
+                self.all_nodes[signature]=from_node
             _connection = from_node.outputs[ui_link.from_socket.name].connect(node=to_node, socket=ui_link.to_socket.identifier)
             return 
         # Since the index is already determined, it is safe to remove the socket and just keep the value.
@@ -426,14 +427,17 @@ class SchemaSolver:
             if isinstance(from_node, SchemaIndex):
                 signature = ("MANTIS_AUTOGENERATED", *self.tree_path_names[1:-1], self.index_str(),
                              ui_link.from_socket.name, ui_link.from_socket.identifier)
-                from .readtree import autogen_node
-                from_node = autogen_node(self.node.base_tree, ui_link.from_socket,
-                                         signature, self.node.mContext)
-                if ui_link.from_socket.name in ['Index']:
-                    from_node.parameters = {ui_link.from_socket.name:index}
-                else:
-                    from_node.parameters = {ui_link.from_socket.name:self.solve_length}
-                frame_mantis_nodes[signature]=from_node; self.solved_nodes[signature]=from_node
+                from_node = self.all_nodes.get(signature)
+                if not from_node:
+                    from .readtree import autogen_node
+                    from_node = autogen_node(self.node.base_tree, ui_link.from_socket,
+                                            signature, self.node.mContext)
+                    if ui_link.from_socket.name in ['Index']:
+                        from_node.parameters = {ui_link.from_socket.name:index}
+                    else:
+                        from_node.parameters = {ui_link.from_socket.name:self.solve_length}
+                    frame_mantis_nodes[signature]=from_node; self.solved_nodes[signature]=from_node
+                    self.all_nodes[signature]=from_node
             elif from_node.node_type == 'DUMMY_SCHEMA':
                 if isinstance( ui_link.from_socket, NodeSocket): # normal
                     from_socket_name = ui_link.from_socket.identifier