/// <summary> /// Deep clone with the given original Node. /// </summary> internal override void Copy(AIControllerSerializer serializer, Node originalNode) { base.Copy(serializer, originalNode); AnyState original = (AnyState)originalNode; m_output = serializer.GetCopyOf(original.m_output); }
/// <summary> /// Deep clone with the given original Node. /// </summary> internal override void Copy(AIControllerSerializer serializer, Node originalNode) { base.Copy(serializer, originalNode); SubCondition original = (SubCondition)originalNode; m_input = serializer.GetCopyOf(original.m_input); m_outputTrue = serializer.GetCopyOf(original.m_outputTrue); m_outputFalse = serializer.GetCopyOf(original.m_outputFalse); }
public void Copy(AIControllerSerializer serializer, ConnectionPort original) { m_node = serializer.GetCopyOf(original.m_node); m_connectedPorts = new ConnectionPort[original.m_connectedPorts.Length]; for (int i = 0; i < original.m_connectedPorts.Length; i++) { m_connectedPorts[i] = (serializer.GetCopyOf(original.m_connectedPorts[i])); } }
/// <summary> /// Deep clone with the given original Node. /// </summary> internal override void Copy(AIControllerSerializer serializer, Node originalNode) { base.Copy(serializer, originalNode); State original = (State)originalNode; m_input = serializer.GetCopyOf(original.m_input); m_output = serializer.GetCopyOf(original.m_output); m_onEnterOutput = serializer.GetCopyOf(original.m_onEnterOutput); m_onUpdateOutput = serializer.GetCopyOf(original.m_onUpdateOutput); m_onExitOutput = serializer.GetCopyOf(original.m_onExitOutput); }
internal void Copy(AIControllerSerializer serializer, AIController original) { isCopy = true; m_entryState = serializer.GetCopyOf(original.m_entryState); m_anyState = serializer.GetCopyOf(original.m_anyState); m_nodes = new List <Node> (); foreach (Node originalNode in original.m_nodes) { m_nodes.Add(serializer.GetCopyOf(originalNode)); } }
/// <summary> /// Creates a deep copy of the given controller. /// </summary> /// <param name="originalController">The controller to copy.</param> /// <returns>Returns a deep copy of the given controller.</returns> public static AIController Copy(AIController originalController) { // Create a copy of the existing controller. AIControllerSerializer serializer = new AIControllerSerializer { m_originalController = originalController, m_copiedController = Object.Instantiate(originalController) }; // create a copy of all nodes and port references. foreach (Node originalNode in serializer.m_originalController.nodes) { Node copyNode = Object.Instantiate(originalNode); copyNode.name = originalNode.name; serializer.m_nodes.Add(originalNode, copyNode); foreach (ConnectionPort originalPort in originalNode.ports) { ConnectionPort copyPort = Object.Instantiate(originalPort); copyPort.name = originalPort.name; serializer.m_ports.Add(originalPort, copyPort); } } // deep copy port references. foreach (ConnectionPort originalPort in serializer.m_ports.Keys) { ConnectionPort copyPort = serializer.m_ports[originalPort]; copyPort.Copy(serializer, originalPort); } // deep copy node references. foreach (Node originalNode in serializer.m_nodes.Keys) { Node copyNode = serializer.m_nodes[originalNode]; copyNode.Copy(serializer, originalNode); } // deep copy controller references. serializer.m_copiedController.Copy(serializer, serializer.m_originalController); return(serializer.m_copiedController); }
/// <summary> /// Deep clone with the given original Node. /// </summary> internal virtual void Copy(AIControllerSerializer serializer, Node originalNode) { m_controller = serializer.copiedController; m_inputs = new ConnectionPort[originalNode.m_inputs.Length]; for (int i = 0; i < originalNode.m_inputs.Length; i++) { m_inputs[i] = serializer.GetCopyOf(originalNode.m_inputs[i]); } m_outputs = new ConnectionPort[originalNode.m_outputs.Length]; for (int i = 0; i < originalNode.m_outputs.Length; i++) { m_outputs[i] = serializer.GetCopyOf(originalNode.m_outputs[i]); } m_ports = new ConnectionPort[originalNode.m_ports.Length]; for (int i = 0; i < originalNode.m_ports.Length; i++) { m_ports[i] = serializer.GetCopyOf(originalNode.m_ports[i]); } }