|  | @@ -14,7 +14,7 @@ def grp_node_reroute_common(in_node, out_node, interface):
 | 
	
		
			
				|  |  |              # the inputs/outputs on the group and in/out nodes are IDs
 | 
	
		
			
				|  |  |              from_node.outputs[from_socket].connect(
 | 
	
		
			
				|  |  |                  interface,in_node_input.name, sort_id = in_link.multi_input_sort_id)
 | 
	
		
			
				|  |  | -            # in_link.die()
 | 
	
		
			
				|  |  | +            in_link.die()
 | 
	
		
			
				|  |  |              init_connections(from_node)
 | 
	
		
			
				|  |  |      for out_node_output in out_node.outputs:
 | 
	
		
			
				|  |  |          while (out_node_output.links):
 | 
	
	
		
			
				|  | @@ -23,7 +23,7 @@ def grp_node_reroute_common(in_node, out_node, interface):
 | 
	
		
			
				|  |  |              for l in interface.inputs[out_node_output.name].links:
 | 
	
		
			
				|  |  |                  interface.outputs[out_node_output.name].connect(
 | 
	
		
			
				|  |  |                      to_node, to_socket, sort_id = l.multi_input_sort_id)
 | 
	
		
			
				|  |  | -            # out_link.die()
 | 
	
		
			
				|  |  | +            out_link.die()
 | 
	
		
			
				|  |  |              init_dependencies(to_node)
 | 
	
		
			
				|  |  |      init_dependencies(interface); init_connections(interface)
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -32,6 +32,7 @@ def reroute_links_grp(group, all_nodes):
 | 
	
		
			
				|  |  |      interface = GroupInterface(
 | 
	
		
			
				|  |  |          ( *group.signature, "InputInterface"),
 | 
	
		
			
				|  |  |          group.base_tree, group.prototype, 'INPUT',)
 | 
	
		
			
				|  |  | +    all_nodes[interface.signature] = interface
 | 
	
		
			
				|  |  |      if group.inputs:
 | 
	
		
			
				|  |  |          if group_input := all_nodes.get(( *group.signature, "NodeGroupInput")):
 | 
	
		
			
				|  |  |              grp_node_reroute_common(group, group_input, interface)
 | 
	
	
		
			
				|  | @@ -44,6 +45,7 @@ def reroute_links_grpout(group_output, all_nodes):
 | 
	
		
			
				|  |  |          interface = GroupInterface(
 | 
	
		
			
				|  |  |              ( *group.signature, "OutputInterface"),
 | 
	
		
			
				|  |  |              group.base_tree, group.prototype, 'OUTPUT',)
 | 
	
		
			
				|  |  | +        all_nodes[interface.signature] = interface
 | 
	
		
			
				|  |  |          grp_node_reroute_common(group_output, group, interface)
 | 
	
		
			
				|  |  |      else:
 | 
	
		
			
				|  |  |          prOrange(f"WARN: unconnected outputs from a node group "
 | 
	
	
		
			
				|  | @@ -56,7 +58,6 @@ def insert_lazy_parents(nc):
 | 
	
		
			
				|  |  |      inherit_nc = None
 | 
	
		
			
				|  |  |      if nc.inputs["Relationship"].is_connected:
 | 
	
		
			
				|  |  |          link = nc.inputs["Relationship"].links[0]
 | 
	
		
			
				|  |  | -        # print(nc)
 | 
	
		
			
				|  |  |          from_nc = link.from_node
 | 
	
		
			
				|  |  |          if from_nc.node_type in ["XFORM"] and link.from_socket in ["xForm Out"]:
 | 
	
		
			
				|  |  |              inherit_nc = LinkInherit(("MANTIS_AUTOGENERATED", *nc.signature[1:], "LAZY_INHERIT"), nc.base_tree)
 | 
	
	
		
			
				|  | @@ -413,7 +414,6 @@ def parse_tree(base_tree, error_popups=False):
 | 
	
		
			
				|  |  |              init_schema_dependencies(schema, all_mantis_nodes)
 | 
	
		
			
				|  |  |              solve_only_these.extend(get_schema_length_dependencies(schema, all_mantis_nodes))
 | 
	
		
			
				|  |  |              unsolved_schema.append(schema)
 | 
	
		
			
				|  |  | -    print (solve_only_these)
 | 
	
		
			
				|  |  |      for array in array_nodes:
 | 
	
		
			
				|  |  |          if array not in solve_only_these: continue
 | 
	
		
			
				|  |  |          solve_only_these.extend(get_schema_length_dependencies(array))
 | 
	
	
		
			
				|  | @@ -486,7 +486,8 @@ def parse_tree(base_tree, error_popups=False):
 | 
	
		
			
				|  |  |          if nc.signature[0] == "MANTIS_AUTOGENERATED" and len(nc.inputs) == 0 and len(nc.outputs) == 1:
 | 
	
		
			
				|  |  |              from .base_definitions import can_remove_socket_for_autogen
 | 
	
		
			
				|  |  |              output=list(nc.outputs.values())[0]
 | 
	
		
			
				|  |  | -            value=list(nc.parameters.values())[0]   # IDEA modify the dependecy get function to exclude these nodes completely
 | 
	
		
			
				|  |  | +            value=list(nc.parameters.values())[0]
 | 
	
		
			
				|  |  | +            # We can remove this node if it is safe to push it into the other node's socket.
 | 
	
		
			
				|  |  |              keep_me = False
 | 
	
		
			
				|  |  |              for l in output.links:
 | 
	
		
			
				|  |  |                  to_node = l.to_node; to_socket = l.to_socket
 | 
	
	
		
			
				|  | @@ -622,9 +623,8 @@ def execute_tree(nodes, base_tree, context, error_popups = False):
 | 
	
		
			
				|  |  |          check_and_add_root(nc, xForm_pass)
 | 
	
		
			
				|  |  |      mContext.execution_failed = False
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    switch_me = [] # switch the mode on these objects
 | 
	
		
			
				|  |  | +    select_me, switch_me = [], [] # switch the mode on these objects
 | 
	
		
			
				|  |  |      active = None # only need it for switching modes
 | 
	
		
			
				|  |  | -    select_me = []
 | 
	
		
			
				|  |  |      try:
 | 
	
		
			
				|  |  |          sorted_nodes, execution_failed = sort_execution(nodes, xForm_pass)
 | 
	
		
			
				|  |  |          for n in sorted_nodes:
 | 
	
	
		
			
				|  | @@ -666,7 +666,6 @@ def execute_tree(nodes, base_tree, context, error_popups = False):
 | 
	
		
			
				|  |  |          # switch to pose mode here so that the nodes can use the final pose data
 | 
	
		
			
				|  |  |          # this will require them to update the depsgraph.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          for ob in switch_me:
 | 
	
		
			
				|  |  |              ob.data.pose_position = 'POSE'
 | 
	
		
			
				|  |  |  
 |