internal bool RemoveSelector(SelectorView sv, bool recordUndo = true) { if (_ai.rootSelector == sv.selector) { EditorUtility.DisplayDialog("Invalid Action", "You cannot remove the root selector.\nTo remove the selected selector please assign another selector as the root first.", "Ok"); return(false); } if (sv == _currentSelector) { _currentSelector = null; this.inspectorState.Refresh(); } RemoveTopLevelViewOperation undoOp = null; if (recordUndo) { undoOp = new RemoveSelectorOperation(this, sv); _undoRedo.Do(undoOp); } var refActions = GetReferencingActions(sv); foreach (var av in refActions) { if (recordUndo) { undoOp.LogReferencingActionRemoval(av); } //References from composite actions must be treated differently var cav = av as CompositeActionView; if (cav != null) { ResetConnection(cav, false); } else { RemoveAction(av, false); } } this.canvas.views.Remove(sv); _ai.RemoveSelector(sv.selector); _selectedViews.Remove(sv); this.isDirty = true; return(true); }
internal void RemoveAILink(AILinkView alv, bool recordUndo = true) { if (alv == _currentAILink) { _currentAILink = null; this.inspectorState.Refresh(); } RemoveTopLevelViewOperation undoOp = null; if (recordUndo) { undoOp = new RemoveAILinkOperation(this, alv); _undoRedo.Do(undoOp); } var refActions = GetReferencingActions(alv); foreach (var av in refActions) { if (recordUndo) { undoOp.LogReferencingActionRemoval(av); } //References from composite actions must be treated differently var cav = av as CompositeActionView; if (cav != null) { ResetConnection(cav, false); } else { RemoveAction(av, false); } } this.canvas.views.Remove(alv); _selectedViews.Remove(alv); this.isDirty = true; }