Esempio n. 1
0
        protected override void EndLink(LinkPinControl linkObj)
        {
            bool alreadyLink = false;
            var  pinInfo     = GetLinkPinInfo("AnimStateLinkHandle");

            if (HostNodesContainer.StartLinkObj == linkObj)
            {
                //base.EndLink(null);
                if (HostNodesContainer.PreviewLinkCurve != null)
                {
                    HostNodesContainer.PreviewLinkCurve.Visibility = System.Windows.Visibility.Hidden;
                }
                return;
            }
            var count = pinInfo.GetLinkInfosCount();

            for (int index = 0; index < count; ++index)
            {
                AnimStateLinkInfoForUndoRedo undoRedoLinkInfo = new AnimStateLinkInfoForUndoRedo();
                var linkInfo = pinInfo.GetLinkInfo(index);
                if (linkInfo.m_linkFromObjectInfo == HostNodesContainer.StartLinkObj && linkInfo.m_linkToObjectInfo == linkObj)
                {
                    alreadyLink = true;
                    undoRedoLinkInfo.linkInfo = linkInfo as AnimStateLinkInfo;
                    NodesContainer.TransitionStaeBaseNodeForUndoRedo transCtrl = new NodesContainer.TransitionStaeBaseNodeForUndoRedo();
                    var redoAction = new Action <Object>((obj) =>
                    {
                        transCtrl.TransitionStateNode = undoRedoLinkInfo.linkInfo.AddTransition();
                    });
                    redoAction.Invoke(null);
                    EditorCommon.UndoRedo.UndoRedoManager.Instance.AddCommand(HostNodesContainer.HostControl.UndoRedoKey, null, redoAction, null,
                                                                              (obj) =>
                    {
                        undoRedoLinkInfo.linkInfo.RemoveTransition(transCtrl.TransitionStateNode);
                    }, "Create StateTransition");
                }

                if (HostNodesContainer.PreviewLinkCurve != null)
                {
                    HostNodesContainer.PreviewLinkCurve.Visibility = System.Windows.Visibility.Hidden;
                }
                //base.EndLink(null,false);
            }
            if (!alreadyLink)
            {
                base.EndLink(linkObj);
            }
        }
Esempio n. 2
0
        protected override void MenuItem_Click_Del(object sender, RoutedEventArgs e)
        {
            if (!CheckCanDelete())
            {
                return;
            }
            List <AnimStateLinkInfoForUndoRedo> undoRedoLinkInfos = new List <AnimStateLinkInfoForUndoRedo>();

            for (int i = 0; i < mCtrlValueLinkHandle.GetLinkInfosCount(); i++)
            {
                var undoRedoLinkInfo  = new AnimStateLinkInfoForUndoRedo();
                var linkInfo          = mCtrlValueLinkHandle.GetLinkInfo(i);
                var animStateLinkInfo = linkInfo as AnimStateLinkInfo;
                undoRedoLinkInfo.linkInfo = animStateLinkInfo;
                undoRedoLinkInfos.Add(undoRedoLinkInfo);
            }

            var redoAction = new Action <object>((obj) =>
            {
                foreach (var linkInfo in undoRedoLinkInfos)
                {
                    linkInfo.linkInfo.RemoveAllFromContainer();
                }
                HostNodesContainer.DeleteNode(this);
            });

            redoAction.Invoke(null);
            EditorCommon.UndoRedo.UndoRedoManager.Instance.AddCommand(HostNodesContainer.HostControl.UndoRedoKey, null, redoAction, null,
                                                                      (obj) =>
            {
                if (m_bMoveable)
                {
                    if (ParentDrawCanvas != null)
                    {
                        ParentDrawCanvas.Children.Add(this);
                        ParentDrawCanvas.Children.Add(mParentLinkPath);
                    }
                    HostNodesContainer.CtrlNodeList.Add(this);
                }
                foreach (var data in undoRedoLinkInfos)
                {
                    data.linkInfo.ResetLink();
                    data.linkInfo.AddAllToContainer();
                    data.linkInfo.UpdateLink();
                }
            }, "Delete Node");
            IsDirty = true;
        }