async System.Threading.Tasks.Task OpenGraph() { var param = CSParam as ParticleShapeConeControlConstructionParams; var assist = this.HostNodesContainer.HostControl; var TitleString = HostNodesContainer.TitleString; if (string.IsNullOrEmpty(TitleString)) { TitleString = "MainGraph"; } var title = TitleString + "/" + NodeName + ":" + this.Id.ToString(); bool isCreated; var data = new SubNodesContainerData() { ID = Id, Title = title, }; mLinkedNodesContainer = await assist.ShowSubNodesContainer(data); if (data.IsCreated) { //await InitializeLinkedNodesContainer(); } mLinkedNodesContainer.HostNode = this; //mLinkedNodesContainer.OnFilterContextMenu = StateControl_FilterContextMenu; }
async System.Threading.Tasks.Task InitializeLinkedNodesContainer() { var param = CSParam as ParticleShapeConeControlConstructionParams; var assist = this.HostNodesContainer.HostControl as Macross.NodesControlAssist; if (mLinkedNodesContainer == null) { var TitleString = HostNodesContainer.TitleString; if (string.IsNullOrEmpty(HostNodesContainer.TitleString)) { TitleString = "MainGraph"; } var title = TitleString + "/" + param.NodeName + ":" + this.Id.ToString(); var data = new SubNodesContainerData() { ID = Id, Title = title, }; mLinkedNodesContainer = await assist.GetSubNodesContainer(data); if (!data.IsCreated) { return; } } // 读取graph var tempFile = assist.HostControl.GetGraphFileName(assist.LinkedCategoryItemName); var linkXndHolder = await EngineNS.IO.XndHolder.LoadXND(tempFile, EngineNS.Thread.Async.EAsyncTarget.AsyncEditor); bool bLoaded = false; if (linkXndHolder != null) { var linkNode = linkXndHolder.Node.FindNode("SubLinks"); var idStr = Id.ToString(); foreach (var node in linkNode.GetNodes()) { if (node.GetName() == idStr) { await mLinkedNodesContainer.Load(node); bLoaded = true; break; } } } if (bLoaded) { } else { for (int i = 0; i < ParticleShapeTemplate.Length; i++) { CreateParticleMethodCategory(ParticleShapeTemplate[i], 50, 100 * i + 50); } } mLinkedNodesContainer.HostNode = this; }
async System.Threading.Tasks.Task InitializeLinkedNodesContainer() { var param = CSParam as AnimStateTransitionControlConstructionParams; var assist = this.HostNodesContainer.HostControl; if (mLinkedNodesContainer == null) { var data = new SubNodesContainerData() { ID = Id, Title = HostNodesContainer.TitleString + "/" + param.NodeName + ":" + this.Id.ToString(), }; mLinkedNodesContainer = await assist.GetSubNodesContainer(data); if (!data.IsCreated) { return; } } // 读取graph var tempFile = assist.GetGraphFileName(assist.LinkedCategoryItemName); var linkXndHolder = await EngineNS.IO.XndHolder.LoadXND(tempFile, EngineNS.Thread.Async.EAsyncTarget.AsyncEditor); bool bLoaded = false; if (linkXndHolder != null) { var linkNode = linkXndHolder.Node.FindNode("SubLinks"); var idStr = Id.ToString(); foreach (var node in linkNode.GetNodes()) { if (node.GetName() == idStr) { await mLinkedNodesContainer.Load(node); bLoaded = true; break; } } } if (bLoaded) { } else { var csParam = new FinalTransitionResultConstructionParams() { CSType = param.CSType, NodeName = "Result", HostNodesContainer = mLinkedNodesContainer, ConstructParam = "", }; var node = mLinkedNodesContainer.AddOrigionNode(typeof(FinalTransitionResultControl), csParam, 300, 0) as FinalTransitionResultControl; node.IsDeleteable = false; } }
public override async System.Threading.Tasks.Task GCode_CodeDom_GenerateCode(CodeTypeDeclaration codeClass, CodeStatementCollection codeStatementCollection, LinkPinControl element, GenerateCodeContext_Method context) { if (mLinkedNodesContainer == null) { var assist = this.HostNodesContainer.HostControl as Macross.NodesControlAssist; var tempFile = assist.HostControl.GetGraphFileName(assist.LinkedCategoryItemName); await assist.LoadSubLinks(tempFile); var data = new SubNodesContainerData() { ID = Id, Title = HostNodesContainer.TitleString + "/" + this.NodeName + "_CustomCondition" + ":" + this.Id.ToString(), }; mLinkedNodesContainer = await assist.GetSubNodesContainer(data); if (data.IsCreated) { CreateSubContainerDefaultNodes(); } } foreach (var ctrl in mLinkedNodesContainer.CtrlNodeList) { ctrl.ReInitForGenericCode(); } foreach (var ctrl in mLinkedNodesContainer.CtrlNodeList) { if (ctrl is CodeDomNode.MethodCustom) { await ctrl.GCode_CodeDom_GenerateCode(codeClass, null, context.ClassContext); } } Type nodeType = typeof(EngineNS.Bricks.AI.BehaviorTree.Decorator.ConditionFuncDecorator); CodeVariableDeclarationStatement stateVarDeclaration = new CodeVariableDeclarationStatement(nodeType, ValidName, new CodeObjectCreateExpression(new CodeTypeReference(nodeType))); codeStatementCollection.Add(stateVarDeclaration); var flowAssign = new CodeAssignStatement(); flowAssign.Left = new CodeFieldReferenceExpression(new CodeVariableReferenceExpression(ValidName), "FlowControl"); flowAssign.Right = new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(FlowControlType)), FlowControl.ToString()); codeStatementCollection.Add(flowAssign); var inverseAssign = new CodeAssignStatement(); inverseAssign.Left = new CodeFieldReferenceExpression(new CodeVariableReferenceExpression(ValidName), "Inverse"); inverseAssign.Right = new CodePrimitiveExpression(Inverse); codeStatementCollection.Add(inverseAssign); var actionAssign = new CodeAssignStatement(); actionAssign.Left = new CodeFieldReferenceExpression(new CodeVariableReferenceExpression(ValidName), "Func"); actionAssign.Right = new CodeVariableReferenceExpression("CustomCondition_" + ValidName); codeStatementCollection.Add(actionAssign); }
async System.Threading.Tasks.Task OpenGraph() { var param = CSParam as AnimStateTransitionControlConstructionParams; var assist = this.HostNodesContainer.HostControl; var data = new SubNodesContainerData() { ID = Id, Title = HostNodesContainer.TitleString + "/" + param.NodeName + ":" + this.Id.ToString(), }; mLinkedNodesContainer = await assist.ShowSubNodesContainer(data); if (data.IsCreated) { await InitializeLinkedNodesContainer(); } mLinkedNodesContainer.OnFilterContextMenu = TransitionGraphNodesControl_FilterContextMenu; }
async System.Threading.Tasks.Task OpenCustomActionGraph() { var assist = this.HostNodesContainer.HostControl; var data = new SubNodesContainerData() { ID = Id, Title = HostNodesContainer.TitleString + "/" + this.NodeName + "_CustomCondition" + ":" + this.Id.ToString(), }; mLinkedNodesContainer = await assist.ShowSubNodesContainer(data); if (data.IsCreated) { CreateSubContainerDefaultNodes(); } mLinkedNodesContainer.HostNode = this; mLinkedNodesContainer.OnFilterContextMenu = CustomCondition_FilterContextMenu; //mLinkedNodesContainer.OnCheckDropAvailable = CustomLAPoseGraphCheckDropAvailable; }
async System.Threading.Tasks.Task <CodeGenerateSystem.Controls.NodesContainerControl> GetNodesContainer() { if (mLinkedNodesContainer == null) { var assist = this.HostNodesContainer.HostControl as Macross.NodesControlAssist; var tempFile = assist.HostControl.GetGraphFileName(assist.LinkedCategoryItemName); await assist.LoadSubLinks(tempFile); var data = new SubNodesContainerData() { ID = Id, Title = HostNodesContainer.TitleString + "/" + this.NodeName + "_Custom" + ":" + this.Id.ToString(), }; mLinkedNodesContainer = await assist.GetSubNodesContainer(data); if (data.IsCreated) { CreateSubContainerDefaultNodes(); } } return(mLinkedNodesContainer); }
async System.Threading.Tasks.Task OpenGraph() { var param = CSParam as ParticleSystemControlConstructionParams; var assist = this.HostNodesContainer.HostControl; if (string.IsNullOrEmpty(HostNodesContainer.TitleString)) { HostNodesContainer.TitleString = "MainGraph"; } var TitleString = HostNodesContainer.TitleString; var title = TitleString + "/" + NodeName + ":" + this.Id.ToString(); var data = new SubNodesContainerData() { ID = Id, Title = title, }; mLinkedNodesContainer = await assist.ShowSubNodesContainer(data); if (data.IsCreated) { await InitializeLinkedNodesContainer(); } else { //加载变量 方法 category items foreach (var ctr in mLinkedNodesContainer.CtrlNodeList) { //ctr.LinkedNodesContainer } } mLinkedNodesContainer.HostNode = this; //mLinkedNodesContainer.OnFilterContextMenu = StateControl_FilterContextMenu; }
async System.Threading.Tasks.Task InitializeLinkedNodesContainer() { var param = CSParam as AnimStateMachineConstructionParams; var assist = this.HostNodesContainer.HostControl as Macross.NodesControlAssist; if (mLinkedNodesContainer == null) { var data = new SubNodesContainerData() { ID = Id, Title = HostNodesContainer.TitleString + "/" + param.NodeName + ":" + this.Id.ToString(), }; mLinkedNodesContainer = await assist.GetSubNodesContainer(data); if (!data.IsCreated) { return; } } // 读取graph var tempFile = assist.HostControl.GetGraphFileName(assist.LinkedCategoryItemName); var linkXndHolder = await EngineNS.IO.XndHolder.LoadXND(tempFile, EngineNS.Thread.Async.EAsyncTarget.AsyncEditor); bool bLoaded = false; if (linkXndHolder != null) { var linkNode = linkXndHolder.Node.FindNode("SubLinks"); var idStr = Id.ToString(); foreach (var node in linkNode.GetNodes()) { if (node.GetName() == idStr) { await mLinkedNodesContainer.Load(node); bLoaded = true; break; } } } if (bLoaded) { } else { var csParam = new CodeDomNode.Animation.StateEntryControlConstructionParams() { CSType = param.CSType, HostNodesContainer = mLinkedNodesContainer, ConstructParam = "", NodeName = "Entry" }; var node = mLinkedNodesContainer.AddOrigionNode(typeof(CodeDomNode.Animation.StateEntryControl), csParam, 0, 0) as CodeDomNode.Animation.StateEntryControl; node.IsDeleteable = false; //var retCSParam = new CodeDomNode.ReturnCustom.ReturnCustomConstructParam() //{ // CSType = param.CSType, // HostNodesContainer = mLinkedNodesContainer, // ConstructParam = "", //}; //var retNode = mLinkedNodesContainer.AddOrigionNode(typeof(CodeDomNode.ReturnCustom), retCSParam, 300, 0) as CodeDomNode.ReturnCustom; //retNode.IsDeleteable = false; //retNode.ShowProperty = false; } }
//初始化每个结点类中的元素 public async System.Threading.Tasks.Task InitGraph() { if (this.HostNodesContainer == null || mLinkedNodesContainer != null) { return; } if (NeedInitGrapth == false) { return; } NeedInitGrapth = false; var assist = this.HostNodesContainer.HostControl; if (string.IsNullOrEmpty(HostNodesContainer.TitleString)) { HostNodesContainer.TitleString = "MainGraph"; } var TitleString = HostNodesContainer.TitleString; var title = TitleString + "/" + NodeName + ":" + this.Id.ToString(); var data = new SubNodesContainerData() { ID = Id, Title = title, }; mLinkedNodesContainer = await assist.GetSubNodesContainer(data); //TODO.. Macross.NodesControlAssist NodesControlAssist = mLinkedNodesContainer.HostControl as Macross.NodesControlAssist; var MacrossOpPanel = NodesControlAssist.HostControl.MacrossOpPanel; var names = new string[] { MacrossPanelBase.GraphCategoryName, MacrossPanelBase.FunctionCategoryName, MacrossPanelBase.VariableCategoryName, MacrossPanelBase.AttributeCategoryName }; var csparam = CSParam as StructNodeControlConstructionParams; csparam.CategoryDic = new Dictionary <string, Category>(); foreach (var name in names) { var category1 = new Category(MacrossOpPanel); category1.CategoryName = name; csparam.CategoryDic.Add(name, category1); //categoryPanel.Children.Add(category); } foreach (var category1 in csparam.CategoryDic) { category1.Value.OnSelectedItemChanged = (categoryName) => { foreach (var cName in names) { if (cName == categoryName) { continue; } Category ctg; if (csparam.CategoryDic.TryGetValue(cName, out ctg)) { ctg.UnSelectAllItems(); } } }; } if (data.IsCreated) { await InitializeLinkedNodesContainer(); } mLinkedNodesContainer.HostNode = this; //ParticleDataSaveLoad.ResetNodeConrol(NeedResetLoadValue, mLinkedNodesContainer, csparam); EngineNS.Thread.Async.TaskLoader.Release(ref WaitContext, this); }