|
@@ -205,34 +205,19 @@ class SchemaSolver:
|
|
|
|
|
|
|
|
if (not can_remove_socket_for_autogen(to_node, ui_link.to_socket.name)) or \
|
|
if (not can_remove_socket_for_autogen(to_node, ui_link.to_socket.name)) or \
|
|
|
to_node.node_type in ['DUMMY', 'DUMMY_SCHEMA']:
|
|
to_node.node_type in ['DUMMY', 'DUMMY_SCHEMA']:
|
|
|
- from .utilities import gen_nc_input_for_data
|
|
|
|
|
- nc_cls = gen_nc_input_for_data(ui_link.from_socket)
|
|
|
|
|
- if (nc_cls): #HACK
|
|
|
|
|
- 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,
|
|
|
|
|
- ])
|
|
|
|
|
- sig = ("MANTIS_AUTOGENERATED", *self.tree_path_names[1:-1], unique_name)
|
|
|
|
|
- nc_from = frame_mantis_nodes.get(sig)
|
|
|
|
|
- if not nc_from:
|
|
|
|
|
- nc_from = nc_cls(sig, self.node.base_tree)
|
|
|
|
|
- nc_from.mContext = self.node.mContext
|
|
|
|
|
- # ugly! maybe even a HACK!
|
|
|
|
|
- nc_from.inputs = {}
|
|
|
|
|
- from .base_definitions import NodeSocket
|
|
|
|
|
- nc_from.outputs = {ui_link.from_socket.name:NodeSocket(name = ui_link.from_socket.name, node=nc_from)}
|
|
|
|
|
- nc_from.parameters = {ui_link.from_socket.name:index}
|
|
|
|
|
- frame_mantis_nodes[sig]=nc_from
|
|
|
|
|
- nc_from.execution_prepared=True
|
|
|
|
|
- from_node = nc_from
|
|
|
|
|
- self.solved_nodes[sig]=from_node
|
|
|
|
|
- _connection = from_node.outputs[ui_link.from_socket.name].connect(node=to_node, socket=ui_link.to_socket.identifier)
|
|
|
|
|
- else:
|
|
|
|
|
- raise RuntimeError()
|
|
|
|
|
|
|
+ from .readtree import autogen_node
|
|
|
|
|
+ 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,])
|
|
|
|
|
+ signature = ("MANTIS_AUTOGENERATED", *self.tree_path_names[1:-1], unique_name)
|
|
|
|
|
+ from_node = frame_mantis_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
|
|
|
|
|
+ _connection = from_node.outputs[ui_link.from_socket.name].connect(node=to_node, socket=ui_link.to_socket.identifier)
|
|
|
return
|
|
return
|
|
|
# Since the index is already determined, it is safe to remove the socket and just keep the value.
|
|
# Since the index is already determined, it is safe to remove the socket and just keep the value.
|
|
|
to_node.parameters[ui_link.to_socket.name] = index
|
|
to_node.parameters[ui_link.to_socket.name] = index
|
|
@@ -438,27 +423,17 @@ class SchemaSolver:
|
|
|
from_node = self.schema_nodes[(*self.tree_path_names, from_ui_node.bl_idname)]
|
|
from_node = self.schema_nodes[(*self.tree_path_names, from_ui_node.bl_idname)]
|
|
|
to_node = outgoing.to_node
|
|
to_node = outgoing.to_node
|
|
|
from .schema_containers import SchemaIndex
|
|
from .schema_containers import SchemaIndex
|
|
|
- if isinstance(from_node, SchemaIndex): # I think I need to dedup this stuff
|
|
|
|
|
- # print("INDEX")
|
|
|
|
|
- from .utilities import gen_nc_input_for_data
|
|
|
|
|
- nc_cls = gen_nc_input_for_data(ui_link.from_socket)
|
|
|
|
|
- if (nc_cls): #HACK
|
|
|
|
|
- sig = ("MANTIS_AUTOGENERATED", *self.tree_path_names[1:-1], self.index_str(), ui_link.from_socket.name, ui_link.from_socket.identifier)
|
|
|
|
|
- nc_from = nc_cls(sig, self.node.base_tree)
|
|
|
|
|
- nc_from.mContext = self.node.mContext
|
|
|
|
|
- nc_from.execution_prepared=True
|
|
|
|
|
- # ugly! maybe even a HACK!
|
|
|
|
|
- nc_from.inputs = {}
|
|
|
|
|
- from .node_container_common import NodeSocket
|
|
|
|
|
- nc_from.outputs = {ui_link.from_socket.name:NodeSocket(name = ui_link.from_socket.name, node=nc_from)}
|
|
|
|
|
- from .node_container_common import get_socket_value
|
|
|
|
|
- if ui_link.from_socket.name in ['Index']:
|
|
|
|
|
- nc_from.parameters = {ui_link.from_socket.name:index}
|
|
|
|
|
- else:
|
|
|
|
|
- nc_from.parameters = {ui_link.from_socket.name:self.solve_length}
|
|
|
|
|
- frame_mantis_nodes[sig]=nc_from
|
|
|
|
|
- from_node = nc_from
|
|
|
|
|
- self.solved_nodes[sig]=from_node
|
|
|
|
|
|
|
+ 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
|
|
|
elif from_node.node_type == 'DUMMY_SCHEMA':
|
|
elif from_node.node_type == 'DUMMY_SCHEMA':
|
|
|
if isinstance( ui_link.from_socket, NodeSocket): # normal
|
|
if isinstance( ui_link.from_socket, NodeSocket): # normal
|
|
|
from_socket_name = ui_link.from_socket.identifier
|
|
from_socket_name = ui_link.from_socket.identifier
|