示例#1
0
        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);
        }
示例#2
0
        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;
        }