// ----------------------------------------------------------------------
 public void ForEachRecursiveDepthFirst(iCS_EditorObject parent, Action <iCS_EditorObject> fnc)
 {
     DetectUndoRedo();
     if (parent == null)
     {
         EditorObjects[0].ForEachRecursiveDepthFirst(child => fnc(child));
     }
     else
     {
         parent.ForEachRecursiveDepthFirst(child => fnc(child));
     }
 }