@@ -273,15 +273,15 @@ public static void CreateWorkingCopy (ref NodeCanvas nodeCanvas, NodeEditorState
273273
274274 nodeCanvas . currentNode = ReplaceSO ( allSOs , clonedSOs , nodeCanvas . currentNode ) ;
275275 nodeCanvas . currentTransition = ReplaceSO ( allSOs , clonedSOs , nodeCanvas . currentTransition ) ;
276- foreach ( Node node in nodeCanvas . nodes )
276+ for ( int nodeIndex = 0 ; nodeIndex < nodeCanvas . Count ; nodeIndex ++ )
277277 { // Clone Nodes, structural content and additional scriptableObjects
278- Node clonedNode = ReplaceSO ( allSOs , clonedSOs , node ) ;
278+ Node clonedNode = nodeCanvas [ nodeIndex ] = ReplaceSO ( allSOs , clonedSOs , nodeCanvas [ nodeIndex ] ) ;
279279 // We're going to restore these from NodeKnobs if desired (!compressed)
280280 clonedNode . Inputs = new List < NodeInput > ( ) ;
281281 clonedNode . Outputs = new List < NodeOutput > ( ) ;
282- foreach ( NodeKnob knob in clonedNode . nodeKnobs )
282+ for ( int knobIndex = 0 ; knobIndex < clonedNode . nodeKnobs . Count ; knobIndex ++ )
283283 { // Clone generic NodeKnobs
284- NodeKnob clonedknob = ReplaceSO ( allSOs , clonedSOs , knob ) ;
284+ NodeKnob clonedknob = clonedNode . nodeKnobs [ knobIndex ] = ReplaceSO ( allSOs , clonedSOs , clonedNode . nodeKnobs [ knobIndex ] ) ;
285285 clonedknob . body = clonedNode ;
286286 // Replace additional scriptableObjects in the NodeKnob
287287 clonedknob . CopyScriptableObjects ( ( ScriptableObject so ) => ReplaceSO ( allSOs , clonedSOs , so ) ) ;
@@ -293,22 +293,20 @@ public static void CreateWorkingCopy (ref NodeCanvas nodeCanvas, NodeEditorState
293293 clonedNode . Outputs . Add ( clonedknob as NodeOutput ) ;
294294 }
295295 }
296- int count = 0 ;
297- foreach ( Transition transition in clonedNode . transitions )
296+ for ( int transitionIndex = 0 ; transitionIndex < clonedNode . transitions . Count ; transitionIndex ++ )
298297 { // Clone transitions
299- if ( transition . startNode != node )
298+ if ( clonedNode . transitions [ transitionIndex ] . startNode != node )
300299 continue ;
301- Transition clonedTransition = ReplaceSO ( allSOs , clonedSOs , transition ) ;
300+ Transition clonedTransition = clonedNode . transitions [ transitionIndex ] = ReplaceSO ( allSOs , clonedSOs , clonedNode . transitions [ transitionIndex ] ) ;
302301 if ( clonedTransition == null )
303302 {
304- Debug . LogError ( "Could not copy transition " + count + " of Node " + clonedNode . name + "!" ) ;
303+ Debug . LogError ( "Could not copy transition " + transitionIndex + " of Node " + clonedNode . name + "!" ) ;
305304 continue ;
306305 }
307- count ++ ;
308306
309307// Debug.Log ("Did replace contents of Transition " + trans.name + " because its Node " + clonedNode.name + " is the start node!");
310- clonedTransition . startNode = ReplaceSO ( allSOs , clonedSOs , transition . startNode ) ;
311- clonedTransition . endNode = ReplaceSO ( allSOs , clonedSOs , transition . endNode ) ;
308+ clonedTransition . startNode = ReplaceSO ( allSOs , clonedSOs , clonedNode . transitions [ transitionIndex ] . startNode ) ;
309+ clonedTransition . endNode = ReplaceSO ( allSOs , clonedSOs , clonedNode . transitions [ transitionIndex ] . endNode ) ;
312310
313311 if ( ! compressed )
314312 clonedTransition . endNode . transitions . Add ( clonedTransition ) ;
@@ -321,12 +319,12 @@ public static void CreateWorkingCopy (ref NodeCanvas nodeCanvas, NodeEditorState
321319 // Needs to be in the same function as the EditorState references nodes from the NodeCanvas
322320 if ( editorStates != null )
323321 {
324- foreach ( NodeEditorState nodeEditorState in editorStates )
322+ for ( int nodeEditorStateIndex = 0 ; nodeEditorStateIndex < editorStates . Count ; nodeEditorStateIndex ++ )
325323 {
326- if ( nodeEditorState == null )
324+ if ( editorStates [ nodeEditorStateIndex ] == null )
327325 continue ;
328326
329- NodeEditorState state = Clone ( nodeEditorState ) ;
327+ NodeEditorState state = Clone ( editorStates [ nodeEditorStateIndex ] ) ;
330328 state . canvas = nodeCanvas ;
331329 state . focusedNode = null ;
332330 state . selectedNode = state . selectedNode != null ? ReplaceSO ( allSOs , clonedSOs , state . selectedNode ) : null ;
0 commit comments