Exemple #1
0
        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);
        }