diff --git a/Scripts/Node.cs b/Scripts/Node.cs index bf7f32e..0ce098f 100644 --- a/Scripts/Node.cs +++ b/Scripts/Node.cs @@ -62,8 +62,8 @@ namespace XNode { protected void OnEnable() { UpdateStaticPorts(); - Init(); - if (graph != null && !graph.CopyInProgress) { + + if (graph != null && !graph.copyInProgress) { OnEnableOverride(); } } @@ -80,11 +80,12 @@ namespace XNode { /// /// Initialize node. Called on creation and after clone in the correct order. /// - // Implementation note: This method is called after a node has been instantiated, and also - // called directly when cloning a full graph. This simply calls Init(), which cannot be - // called from outside, as it is protected, not public, and making it public would break - // existing code. public virtual void OnEnableOverride() { + // Implementation note: This method is called after a node has been instantiated, and also + // called directly when cloning a full graph. This simply calls Init(), which cannot be + // called from outside, as it is protected, not public, and making it public would break + // existing code. + Init(); } diff --git a/Scripts/NodeGraph.cs b/Scripts/NodeGraph.cs index fd3dfdb..65b6212 100644 --- a/Scripts/NodeGraph.cs +++ b/Scripts/NodeGraph.cs @@ -11,10 +11,12 @@ namespace XNode { /// See: [SerializeField] public List nodes = new List(); - // Non serialized flag to indicate a copy operation is currently underway. - // This stops nodes from calling OnEnableOverride before we updated the - // graph reference. - public bool CopyInProgress { get; protected set; } + /// + /// Non serialized flag to indicate a copy operation is currently underway. + /// This stops nodes from calling OnEnableOverride before we updated the + /// graph reference. + /// + public bool copyInProgress { get; protected set; } /// Add a node to the graph by type public T AddNode() where T : Node { @@ -32,18 +34,14 @@ namespace XNode { /// Creates a copy of the original node in the graph public virtual Node CopyNode(Node original) { - this.CopyInProgress = true; - try { - Node node = ScriptableObject.Instantiate(original); - node.ClearConnections(); - nodes.Add(node); - node.graph = this; - node.OnEnableOverride(); - return node; - } - finally { - this.CopyInProgress = false; - } + this.copyInProgress = true; + Node node = ScriptableObject.Instantiate(original); + node.ClearConnections(); + nodes.Add(node); + node.graph = this; + node.OnEnableOverride(); + this.copyInProgress = false; + return node; } /// Safely remove a node and all its connections @@ -68,36 +66,35 @@ namespace XNode { public XNode.NodeGraph Copy() { // Instantiate a new nodegraph instance NodeGraph graph = Instantiate(this); - graph.CopyInProgress = true; - try { - // Instantiate all nodes inside the graph - for (int i = 0; i < nodes.Count; i++) { - if (nodes[i] == null) continue; - Node node = Instantiate(nodes[i]) as Node; - node.graph = graph; - graph.nodes[i] = node; - } + graph.copyInProgress = true; - // Redirect all connections - for (int i = 0; i < graph.nodes.Count; i++) { - if (graph.nodes[i] == null) continue; - foreach (NodePort port in graph.nodes[i].Ports) { - port.Redirect(nodes, graph.nodes); - } - } - - // Call the Enable notifier, which was not fired during the - // normal instantiation. - for (int i = 0; i < graph.nodes.Count; i++) { - var node = graph.nodes[i]; - if (node == null) continue; - node.OnEnableOverride(); + // Instantiate all nodes inside the graph + for (int i = 0; i < nodes.Count; i++) { + if (nodes[i] == null) continue; + Node node = Instantiate(nodes[i]) as Node; + node.graph = graph; + graph.nodes[i] = node; + } + + // Redirect all connections + for (int i = 0; i < graph.nodes.Count; i++) { + if (graph.nodes[i] == null) continue; + foreach (NodePort port in graph.nodes[i].Ports) { + port.Redirect(nodes, graph.nodes); } } - finally { - graph.CopyInProgress = false; + + // Call the Enable notifier, which was not fired during the + // normal instantiation. + for (int i = 0; i < graph.nodes.Count; i++) { + var node = graph.nodes[i]; + if (node == null) continue; + node.OnEnableOverride(); } + graph.copyInProgress = false; + + return graph; }