private void UserControl_MouseEnter(object sender, MouseEventArgs e) { if (HostNodesContainer == null) { BGBorder.Background = Brushes.White; return; } if (HostNodesContainer?.PreviewLinkCurve?.Visibility == Visibility.Visible) { if (CodeGenerateSystem.Base.LinkInfo.CanLinkWith(HostNodesContainer.StartLinkObj, this) && ModuleLinkInfo.CanLinkWith2(HostNodesContainer.StartLinkObj, this)) { BGBorder.Background = Brushes.Green; } else { BGBorder.Background = Brushes.Red; } } else { BGBorder.Background = Brushes.White; } }
protected override void EndLink(LinkPinControl linkObj) { if (linkObj == null) { return; } bool alreadyLink = false; var pinInfo = GetLinkPinInfo("ParticleTextureCutControlDown"); if (HostNodesContainer.StartLinkObj == linkObj) { base.EndLink(null); if (HostNodesContainer.PreviewLinkCurve != null) { HostNodesContainer.PreviewLinkCurve.Visibility = System.Windows.Visibility.Hidden; } return; } if (pinInfo == null) { return; } if (CodeGenerateSystem.Base.LinkInfo.CanLinkWith(HostNodesContainer.StartLinkObj, linkObj) && ModuleLinkInfo.CanLinkWith2(HostNodesContainer.StartLinkObj, linkObj)) { var container = new NodesContainer.LinkInfoContainer(); //链接之前删除linkObj其他链接 if (linkObj.LinkOpType == enLinkOpType.End) { if (linkObj.LinkInfos.Count > 0) { //linkObj.LinkInfos[0].m_linkFromObjectInfo.RemoveLink(linkObj.LinkInfos[0]); //linkObj.LinkInfos[0].m_linkToObjectInfo.RemoveLink(linkObj.LinkInfos[0]); linkObj.LinkInfos[0].Clear(); linkObj.LinkInfos.Clear(); } } //if (mStartLinkObj.LinkOpType == enLinkOpType.Start) //{ container.Start = HostNodesContainer.StartLinkObj; container.End = linkObj; //} //else //{ // container.Start = objInfo; // container.End = mStartLinkObj; //} HostNodesContainer.IsOpenContextMenu = false; var redoAction = new Action <Object>((obj) => { var linkInfo = new ModuleLinkInfo(HostNodesContainer.ContainerDrawCanvas, container.Start, container.End); }); redoAction.Invoke(null); //EditorCommon.UndoRedo.UndoRedoManager.Instance.AddCommand(HostControl.UndoRedoKey, null, redoAction, null, // (obj) => // { // for (int i = 0; i < container.End.GetLinkInfosCount(); i++) // { // var info = container.End.GetLinkInfo(i); // if (info.m_linkFromObjectInfo == container.Start) // { // info.Clear(); // break; // } // } // }, "Create Link"); IsDirty = true; } 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); }
protected override void EndLink(LinkPinControl linkObj) { if (linkObj == null) { return; } bool alreadyLink = false; var pinInfo = GetLinkPinInfo("ParticleComposeControlDown"); if (HostNodesContainer.StartLinkObj == linkObj) { base.EndLink(null); if (HostNodesContainer.PreviewLinkCurve != null) { HostNodesContainer.PreviewLinkCurve.Visibility = System.Windows.Visibility.Hidden; } return; } if (pinInfo == null) { return; } if (CodeGenerateSystem.Base.LinkInfo.CanLinkWith(HostNodesContainer.StartLinkObj, linkObj) && ModuleLinkInfo.CanLinkWith2(HostNodesContainer.StartLinkObj, linkObj)) { var container = new NodesContainer.LinkInfoContainer(); //链接之前删除linkObj其他链接 //if (linkObj.LinkOpType == enLinkOpType.End) //{ // if (linkObj.LinkInfos.Count > 0) // { // //linkObj.LinkInfos[0].m_linkFromObjectInfo.RemoveLink(linkObj.LinkInfos[0]); // //linkObj.LinkInfos[0].m_linkToObjectInfo.RemoveLink(linkObj.LinkInfos[0]); // linkObj.LinkInfos[0].Clear(); // linkObj.LinkInfos.Clear(); // } //} //if (mStartLinkObj.LinkOpType == enLinkOpType.Start) //{ container.Start = HostNodesContainer.StartLinkObj; container.End = linkObj; //} //else //{ // container.Start = objInfo; // container.End = mStartLinkObj; //} HostNodesContainer.IsOpenContextMenu = false; var redoAction = new Action <Object>((obj) => { var linkInfo = new ModuleLinkInfo(HostNodesContainer.ContainerDrawCanvas, container.Start, container.End); }); redoAction.Invoke(null); //EditorCommon.UndoRedo.UndoRedoManager.Instance.AddCommand(HostControl.UndoRedoKey, null, redoAction, null, // (obj) => // { // for (int i = 0; i < container.End.GetLinkInfosCount(); i++) // { // var info = container.End.GetLinkInfo(i); // if (info.m_linkFromObjectInfo == container.Start) // { // info.Clear(); // break; // } // } // }, "Create Link"); IsDirty = true; } }
private void UserControl_MouseLeftUp(object sender, MouseButtonEventArgs e) { if (HostNodesContainer == null) { //HostNodesContainer?.PreviewLinkCurve?.Visibility = Visibility.Collapsed; return; } if (HostNodesContainer?.PreviewLinkCurve?.Visibility == Visibility.Visible) { if (CodeGenerateSystem.Base.LinkInfo.CanLinkWith(HostNodesContainer.StartLinkObj, this) && ModuleLinkInfo.CanLinkWith2(HostNodesContainer.StartLinkObj, this)) { } else { //HostNodesContainer?.PreviewLinkCurve?.Visibility = Visibility.Collapsed; } } }