public override async Task <bool> LoadXnd(CRenderContext rc, GActor host, IComponentContainer hostContainer, XndNode node) { Host = host; if (false == await base.LoadXnd(rc, host, hostContainer, node)) { return(false); } var cpNodes = node.FindNode("CompChildren"); if (cpNodes != null) { Components.Clear(); var nodes = cpNodes.GetNodes(); foreach (var i in nodes) { var type = Rtti.RttiHelper.GetTypeFromSaveString(i.GetName()); if (type == null) { Profiler.Log.WriteLine(Profiler.ELogTag.Error, "ACC", $"Component {i.GetName()} is invalid"); continue; } Component.GComponent comp = Activator.CreateInstance(type) as Component.GComponent; if (false == await comp.LoadXnd(rc, Host, this, i)) { Profiler.Log.WriteLine(Profiler.ELogTag.Error, "ACC", $"Component {i.GetName()} load failed"); continue; } this.AddComponent(comp); } } return(true); }
public static async System.Threading.Tasks.Task <bool> LoadData2(string name, XndNode xndNode, StructNodeControlConstructionParams csparam, IParticleNode pnode, CodeGenerateSystem.Controls.NodesContainerControl mLinkedNodesContainer) { var psd = pnode as IParticleSaveData; if (psd != null) { psd.SetXndNode(xndNode); psd.SetXndAttribName(name); } if (pnode.GetCreateObject() != null) { var childenode = xndNode.FindNode("CreateObjectNode"); await pnode.GetCreateObject().Load(childenode); } return(false); }
public static async System.Threading.Tasks.Task <bool> LoadData(string name, XndNode xndNode, StructNodeControlConstructionParams csparam, IParticleNode pnode, CodeGenerateSystem.Controls.NodesContainerControl mLinkedNodesContainer) { if (mLinkedNodesContainer != null) { var att = xndNode.FindAttrib(name); if (att != null) { List <string> keys = new List <string>(); switch (att.Version) { case 0: { att.BeginRead(); int count = 0; att.Read(out count); if (count != 0) { Macross.NodesControlAssist NodesControlAssist; MacrossPanelBase MacrossOpPanel; IMacrossOperationContainer NodesControlAssist_HostControl; NodesControlAssist = mLinkedNodesContainer.HostControl as Macross.NodesControlAssist; MacrossOpPanel = NodesControlAssist.HostControl.MacrossOpPanel; NodesControlAssist_HostControl = NodesControlAssist.HostControl; csparam.CategoryDic = new Dictionary <string, Category>(); for (int i = 0; i < count; i++) { string key; int itemcount; att.Read(out key); keys.Add(key); att.Read(out itemcount); csparam.CategoryDic[key] = new Category(MacrossOpPanel); //var category = csparam.CategoryDic[key]; //for (int j = 0; j < itemcount; j++) //{ // category.Items.Add(new CategoryItem(null, category)); // //category.Items[j].Load(xndNode, NodesControlAssist_HostControl); //} } //此刻已经读完 att.EndRead(); for (int i = 0; i < keys.Count; i++) { var Node = xndNode.FindNode(keys[i]); var category = csparam.CategoryDic[keys[i]]; var childNodes = Node.GetNodes(); foreach (var childNode in childNodes) { var item = new CategoryItem(null, category); item.Load(childNode, NodesControlAssist_HostControl); category.Items.Add(item); } } } } break; } //att.EndRead(); } } if (pnode.GetCreateObject() != null) { var childenode = xndNode.FindNode("CreateObjectNode"); await pnode.GetCreateObject().Load(childenode); } return(false); }