private void MenuItem_PostProcess_Click(object sender, RoutedEventArgs e) { Category category; if (!mCategoryDic.TryGetValue(LogicAnimationPostProcessCategoryName, out category)) { return; } var validName = GetValidName("LogicAnimPostProcess", category); var item = new CategoryItem(null, category); item.CategoryItemType = CategoryItem.enCategoryItemType.LogicAnimPostProcess; item.Name = validName; item.InitTypeStr = "LA_PostProcess"; var data = new LAAnimPostProcessCategoryItemInitData(); data.Name = validName; data.ToolTips = item.ToolTips; data.Reset(); item.Initialize(HostControl, data); category.Items.Add(item); Action create = async() => { var nodeContainer = await HostControl.GetNodesContainer(item, true); { var csParam = new LAStartPoseControlConstructionParams() { CSType = HostControl.CSType, NodeName = "InPose", HostNodesContainer = nodeContainer.NodesControl, ConstructParam = "", }; var ins = nodeContainer.NodesControl.AddNodeControl(typeof(LAStartPoseControl), csParam, 50, 250); ins.HostNodesContainer = nodeContainer.NodesControl; ins.IsDeleteable = false; } { var csParam = new LAFinalPoseControlConstructionParams() { CSType = HostControl.CSType, NodeName = "OutPose", HostNodesContainer = nodeContainer.NodesControl, ConstructParam = "", }; var ins = nodeContainer.NodesControl.AddNodeControl(typeof(LAFinalPoseControl), csParam, 550, 250); ins.HostNodesContainer = nodeContainer.NodesControl; ins.IsDeleteable = false; } }; create.Invoke(); }
private void InitializeMenuItems() { Macross.CategoryItem.RegistInitAction("LA_AnimLayer", new Action <Macross.CategoryItem, Macross.IMacrossOperationContainer, Macross.CategoryItem.InitializeData>((item, ctrl, data) => { if (item.PropertyShowItem == null) { item.PropertyShowItem = new LAAnimLayerCategoryItemPropertys(); var varItemPro = item.PropertyShowItem as LAAnimLayerCategoryItemPropertys; var varData = data as LAAnimLayerCategoryItemInitData; varItemPro.Name = varData.Name; varItemPro.ToolTips = varData.ToolTips; varItemPro.LayerType = varData.LayerType; varItemPro.CategoryItem = item; BindingOperations.SetBinding(item, CategoryItem.NameProperty, new Binding("Name") { Source = varItemPro, Mode = BindingMode.TwoWay }); BindingOperations.SetBinding(item, CategoryItem.ToolTipsProperty, new Binding("ToolTips") { Source = varItemPro, Mode = BindingMode.TwoWay }); BindingOperations.SetBinding(varItemPro, LAAnimLayerCategoryItemPropertys.LayerTypeProperty, new Binding("LayerType") { Source = varData, Mode = BindingMode.TwoWay }); } //BindingOperations.SetBinding(item, Macross.CategoryItem.NameProperty, new Binding("Name") { Source = initData.UIElement.Initializer }); var menuItem = new MenuItem() { Name = "LA_AnimLayerItem", Header = "添加LinkNode", Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "MenuItem_Default")) as Style, }; menuItem.Click += (object sender, RoutedEventArgs e) => { var animGrapItem = new CategoryItem(item, item.ParentCategory); animGrapItem.CategoryItemType = CategoryItem.enCategoryItemType.LogicAnimGraph; animGrapItem.Name = GetValidName("LinkNode", item.ParentCategory); animGrapItem.InitTypeStr = "LA_AnimGraph"; var tempData = new LAAnimGraphCategoryItemInitData(); tempData.Name = animGrapItem.Name; tempData.ToolTips = animGrapItem.ToolTips; tempData.Reset(); animGrapItem.Initialize(ctrl, tempData); item.Children.Add(animGrapItem); Action create = async() => { var nodeContainer = await ctrl.GetNodesContainer(animGrapItem, true); var csParam = new LAGraphNodeControlConstructionParams(); csParam.CSType = ctrl.CSType; csParam.LAGNodeName = animGrapItem.Name; csParam.LinkedCategoryItemID = animGrapItem.Id; csParam.IsSelfGraphNode = true; var ins = nodeContainer.NodesControl.AddNodeControl(typeof(LAGraphNodeControl), csParam, 0, 200); ins.HostNodesContainer = nodeContainer.NodesControl; }; create.Invoke(); }; item.CategoryItemContextMenu.Items.Add(menuItem); { menuItem = new MenuItem() { Name = "LA_AnimLayerItem_Delete", Header = "删除", Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "MenuItem_Default")) as Style, }; ResourceLibrary.Controls.Menu.MenuAssist.SetIcon(menuItem, new BitmapImage(new Uri("/ResourceLibrary;component/Icons/Icons/icon_Edit_Delete_40x.png", UriKind.Relative))); menuItem.Click += (object sender, RoutedEventArgs e) => { if (EditorCommon.MessageBox.Show($"即将删除{this.Name},删除后无法恢复,是否继续?", EditorCommon.MessageBox.enMessageBoxButton.YesNo) == EditorCommon.MessageBox.enMessageBoxResult.Yes) { item.ParentCategory.Items.Remove(item); ctrl.RemoveNodesContainer(item); var fileName = ctrl.GetGraphFileName(item.Name); EngineNS.CEngine.Instance.FileManager.DeleteFile(fileName); if (item.Parent != null) { item.Parent.Children.Remove(item); } } }; item.CategoryItemContextMenu.Items.Add(menuItem); } })); Macross.CategoryItem.RegistInitAction("LA_AnimGraph", new Action <Macross.CategoryItem, Macross.IMacrossOperationContainer, Macross.CategoryItem.InitializeData>((item, ctrl, data) => { if (item.PropertyShowItem == null) { item.PropertyShowItem = new LAAnimGraphCategoryItemPropertys(); var varItemPro = item.PropertyShowItem as LAAnimGraphCategoryItemPropertys; var varData = data as LAAnimGraphCategoryItemInitData; if (varData == null) { varItemPro.Name = item.Name; varItemPro.ToolTips = item.ToolTips; } else { varItemPro.Name = varData.Name; varItemPro.ToolTips = varData.ToolTips; } varItemPro.LinkControl = ctrl as MCLAMacrossLinkControl; varItemPro.CategoryItem = item; BindingOperations.SetBinding(item, CategoryItem.NameProperty, new Binding("Name") { Source = varItemPro, Mode = BindingMode.TwoWay }); BindingOperations.SetBinding(item, CategoryItem.ToolTipsProperty, new Binding("ToolTips") { Source = varItemPro, Mode = BindingMode.TwoWay }); } var initData = data as LAAnimGraphCategoryItemInitData; //BindingOperations.SetBinding(item, Macross.CategoryItem.NameProperty, new Binding("Name") { Source = initData.UIElement.Initializer }); item.Icon = TryFindResource("Icon_Graph") as ImageSource; item.OnDoubleClick += (categoryItem) => { var noUse = ctrl.ShowNodesContainer(categoryItem); }; var menuItem = new MenuItem() { Name = "LA_AnimGraphItem", Header = "添加LinkNode", Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "MenuItem_Default")) as Style, }; menuItem.Click += (object sender, RoutedEventArgs e) => { var animGrapItem = new CategoryItem(item, item.ParentCategory); animGrapItem.CategoryItemType = CategoryItem.enCategoryItemType.LogicAnimGraph; animGrapItem.Name = GetValidName("LinkNode", item.ParentCategory); animGrapItem.InitTypeStr = "LA_AnimGraph"; var tempData = new LAAnimGraphCategoryItemInitData(); tempData.Name = animGrapItem.Name; tempData.ToolTips = animGrapItem.ToolTips; tempData.Reset(); animGrapItem.Initialize(ctrl, tempData); item.Children.Add(animGrapItem); Action create = async() => { var nodeContainer = await ctrl.GetNodesContainer(animGrapItem, true); var csParam = new LAGraphNodeControlConstructionParams(); csParam.CSType = ctrl.CSType; csParam.LAGNodeName = animGrapItem.Name; csParam.LinkedCategoryItemID = animGrapItem.Id; csParam.IsSelfGraphNode = true; var ins = nodeContainer.NodesControl.AddNodeControl(typeof(LAGraphNodeControl), csParam, 0, 200); ins.HostNodesContainer = nodeContainer.NodesControl; }; create.Invoke(); }; item.CategoryItemContextMenu.Items.Add(menuItem); { menuItem = new MenuItem() { Name = "LA_AnimGraphItem_Delete", Header = "删除", Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "MenuItem_Default")) as Style, }; ResourceLibrary.Controls.Menu.MenuAssist.SetIcon(menuItem, new BitmapImage(new Uri("/ResourceLibrary;component/Icons/Icons/icon_Edit_Delete_40x.png", UriKind.Relative))); menuItem.Click += (object sender, RoutedEventArgs e) => { if (EditorCommon.MessageBox.Show($"即将删除{this.Name},删除后无法恢复,是否继续?", EditorCommon.MessageBox.enMessageBoxButton.YesNo) == EditorCommon.MessageBox.enMessageBoxResult.Yes) { item.ParentCategory.Items.Remove(item); ctrl.RemoveNodesContainer(item); var fileName = ctrl.GetGraphFileName(item.Name); EngineNS.CEngine.Instance.FileManager.DeleteFile(fileName); if (item.Parent != null) { item.Parent.Children.Remove(item); } } }; item.CategoryItemContextMenu.Items.Add(menuItem); } })); Macross.CategoryItem.RegistInitAction("LA_PostProcess", new Action <Macross.CategoryItem, Macross.IMacrossOperationContainer, Macross.CategoryItem.InitializeData>((item, ctrl, data) => { if (item.PropertyShowItem == null) { item.PropertyShowItem = new LAAnimPostProcessCategoryItemPropertys(); var varItemPro = item.PropertyShowItem as LAAnimPostProcessCategoryItemPropertys; var varData = new LAAnimPostProcessCategoryItemInitData(); varItemPro.Name = varData.Name; varItemPro.ToolTips = varData.ToolTips; varItemPro.CategoryItem = item; BindingOperations.SetBinding(item, CategoryItem.NameProperty, new Binding("Name") { Source = varItemPro, Mode = BindingMode.TwoWay }); BindingOperations.SetBinding(item, CategoryItem.ToolTipsProperty, new Binding("ToolTips") { Source = varItemPro, Mode = BindingMode.TwoWay }); var initData = data as LAAnimPostProcessCategoryItemInitData; } //BindingOperations.SetBinding(item, Macross.CategoryItem.NameProperty, new Binding("Name") { Source = initData.UIElement.Initializer }); item.Icon = TryFindResource("Icon_Graph") as ImageSource; Macross.CategoryItem.Delegate_OnDoubleClick openAction = async(categoryItem) => { var noUse = await ctrl.ShowNodesContainer(categoryItem); }; item.OnDoubleClick += openAction; var menuItem = new MenuItem() { Name = "AnimPostProcessOpenGraph", Header = "打开", Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "MenuItem_Default")) as Style, }; menuItem.Click += (object sender, RoutedEventArgs e) => { openAction.Invoke(item); }; item.CategoryItemContextMenu.Items.Add(menuItem); { menuItem = new MenuItem() { Name = "LA_AnimGraphItem_Delete", Header = "删除", Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "MenuItem_Default")) as Style, }; ResourceLibrary.Controls.Menu.MenuAssist.SetIcon(menuItem, new BitmapImage(new Uri("/ResourceLibrary;component/Icons/Icons/icon_Edit_Delete_40x.png", UriKind.Relative))); menuItem.Click += (object sender, RoutedEventArgs e) => { if (EditorCommon.MessageBox.Show($"即将删除{this.Name},删除后无法恢复,是否继续?", EditorCommon.MessageBox.enMessageBoxButton.YesNo) == EditorCommon.MessageBox.enMessageBoxResult.Yes) { item.ParentCategory.Items.Remove(item); ctrl.RemoveNodesContainer(item); var fileName = ctrl.GetGraphFileName(item.Name); EngineNS.CEngine.Instance.FileManager.DeleteFile(fileName); if (item.Parent != null) { item.Parent.Children.Remove(item); } } }; item.CategoryItemContextMenu.Items.Add(menuItem); } })); }