public async Task <ResourceInfo> CreateEmptyResource(string absFolder, string rootFolder, IResourceCreateData createData)
        {
            await EngineNS.Thread.AsyncDummyClass.DummyFunc();

            var result = new ExcelResourceInfo();

            var data   = createData as ExcelCreateData;
            var reName = EngineNS.CEngine.Instance.FileManager._GetRelativePathFromAbsPath(absFolder + "/" + (data.ExcelName.Equals("") ? data.ResourceName : data.ExcelName), EngineNS.CEngine.Instance.FileManager.ProjectContent);

            reName += EngineNS.CEngineDesc.ExcelExtension;
            result.ResourceName = EngineNS.RName.GetRName(reName, data.RNameType);

            ExcelExporter newexport   = new ExcelExporter();
            var           macrossType = EngineNS.Macross.MacrossFactory.Instance.GetMacrossType(data.MacrossName);

            newexport.Init("", macrossType);
            List <Object> lst = new List <Object>();

            //lst.Add( Activator.CreateInstance(data._Type)); //必须要有默认构造函数

            newexport.Objects2Table(lst);
            newexport.Save(result.ResourceName.Address);
            result.MacrossName = data.MacrossName;// + ", " + data._Type.Assembly.FullName;
            return(result);
        }
        //public static async Task<MacrossEnumResourceInfo> GetBaseMacrossResourceInfo(Type baseType)
        //{
        //    var macrossDirs = EngineNS.CEngine.Instance.FileManager.GetFiles(EngineNS.CEngine.Instance.FileManager.Content, baseType.Name + EngineNS.CEngineDesc.MacrossEnumExtension + ".rinfo", System.IO.SearchOption.AllDirectories);
        //    if (macrossDirs.Length > 0)
        //    {
        //        var resInfo = await EditorCommon.Resources.ResourceInfoManager.Instance.CreateResourceInfoFromFile(macrossDirs[0], null) as MacrossEnumResourceInfo;
        //        return resInfo;
        //    }
        //    return null;
        //}

        protected override async Task <ResourceInfo> CreateResourceInfoFromResourceOverride(EngineNS.RName resourceName)
        {
            await EngineNS.Thread.AsyncDummyClass.DummyFunc();

            var retValue = new ExcelResourceInfo();

            return(retValue);
        }
        public async Task SetObjectToEdit(ResourceEditorContext context)
        {
            await EngineNS.Thread.AsyncDummyClass.DummyFunc();

            if (context.ResInfo == null)
            {
                return;
            }

            ResourceInfo = context.ResInfo as ExcelResourceInfo;
            if (ResourceInfo == null)
            {
                return;
            }

            //UIPanel.Children.Clear();
            var filename = ResourceInfo.AbsInfoFileName.Replace(".rinfo", "");

            FileName = filename;
            if (System.IO.File.Exists(filename))
            {
                ExcelImporter import = new ExcelImporter();
                import.Init(filename);
                var method = import.GetType().GetMethod("Table2Objects");

                //var assembly = EngineNS.Rtti.RttiHelper.GetAssemblyFromDllFileName(EngineNS.ECSType.Common, EngineNS.CEngine.Instance.FileManager.Bin + "MacrossScript.dll", "", true);
                var assembly = EngineNS.CEngine.Instance.MacrossDataManager.MacrossScripAssembly;// Assembly.LoadFile(EngineNS.CEngine.Instance.FileManager.Bin + "MacrossScript.dll");
                try
                {
                    MacrossName = ResourceInfo.MacrossName;
                    var type = EngineNS.Macross.MacrossFactory.Instance.GetMacrossType(MacrossName);
                    ObjectList = method.MakeGenericMethod(type).Invoke(import, null) as IList;
                    RefreshDatas();
                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.ToString());
                }
            }
            else
            {
                //ClassInfo.AddNode(_ClassType.ClassName, _ClassType);
            }
        }
        public void RecordObject(Object obj, ExcelResourceInfo info)
        {
            if (obj == null)
            {
                return;
            }

            var type = obj.GetType();

            if (DontProcessObject(obj, type))
            {
                return;
            }

            if (DontProcessNameSpace(obj, type))
            {
                return;
            }



            //处理字段集
            FieldInfo[] ActorFields = type.GetFields();

            for (int i = 0; i < ActorFields.Length; i++)
            {
                object value;
                try
                {
                    value = ActorFields[i].GetValue(obj);
                }
                catch (Exception e)

                {
                    value = null;
                }

                if (value == null)
                {
                    continue;
                }

                {
                    //看是否使用宏图文件
                    EngineNS.RName rname = value as EngineNS.RName;
                    if (rname != null)
                    {
                        //Record..
                        info.ReferenceRNameList.Add(rname);
                    }
                }


                Type pp = value.GetType();
                if (IsArray(pp))
                {
                    Type[] args = pp.GetGenericArguments();
                    //Array List
                    if (args.Length == 1 || args.Length == 0)
                    {
                        var tt = (System.Collections.IEnumerable)value;
                        if (tt != null)
                        {
                            foreach (var v in tt)
                            {
                                EngineNS.RName rname = v as EngineNS.RName;
                                if (rname != null)
                                {
                                    //Record..
                                    info.ReferenceRNameList.Add(rname);
                                }
                                else
                                {
                                    RecordObject(v, info);
                                }
                            }
                        }
                    }
                    //Dictionary
                    else if (args.Length == 2)
                    {
                        var tt = (System.Collections.IDictionary)value;
                        if (tt != null)
                        {
                            foreach (var v in tt.Values)
                            {
                                EngineNS.RName rname = v as EngineNS.RName;
                                if (rname != null)
                                {
                                    //Record..
                                    info.ReferenceRNameList.Add(rname);
                                }
                                else
                                {
                                    RecordObject(v, info);
                                }
                            }
                        }
                    }
                }
                else
                {
                    RecordObject(value, info);
                }
            }

            //处理属性集
            PropertyInfo[] ActorProperties = type.GetProperties();
            for (int i = 0; i < ActorProperties.Length; i++)
            {
                object value;
                try
                {
                    value = ActorProperties[i].GetValue(obj);
                }
                catch (Exception e)

                {
                    value = null;
                }

                if (value == null)
                {
                    continue;
                }

                //看是否使用宏图文件
                {
                    EngineNS.RName rname = value as EngineNS.RName;
                    if (rname != null)
                    {
                        //Record..
                        info.ReferenceRNameList.Add(rname);
                    }
                }

                Type pp = value.GetType();
                if (IsArray(pp))
                {
                    Type[] args = pp.GetGenericArguments();
                    //Array List
                    if (args.Length == 1 || args.Length == 0)
                    {
                        var tt = (System.Collections.IEnumerable)value;
                        if (tt != null)
                        {
                            foreach (var v in tt)
                            {
                                EngineNS.RName rname = v as EngineNS.RName;
                                if (rname != null)
                                {
                                    //Record..
                                    info.ReferenceRNameList.Add(rname);
                                }
                                else
                                {
                                    RecordObject(v, info);
                                }
                            }
                        }
                    }
                    //Dictionary
                    else if (args.Length == 2)
                    {
                        var tt = (System.Collections.IDictionary)value;
                        if (tt != null)
                        {
                            foreach (var v in tt.Values)
                            {
                                EngineNS.RName rname = v as EngineNS.RName;
                                if (rname != null)
                                {
                                    //Record..
                                    info.ReferenceRNameList.Add(rname);
                                }
                                else
                                {
                                    RecordObject(v, info);
                                }
                            }
                        }
                    }
                }
                else
                {
                    RecordObject(value, info);
                }
            }
        }