internal static bool CreateMetadataDatabaseFiles() { var result = false; var settings = MetadataAssetSettings.Load(); MetadataAssetSettings.CreateMetadataPersistentStoreFolder(settings); DeleteTempDbFiles(); var dbFolderPath = EditorPath.ConvertToAbsolutePath(settings.MetadataPersistentStorePath); ForEachExcelFile(settings.ExcelWorkbookFilesFolderPath, (table, fileName, index, length) => { if (table == null) { return; } var entityClassName = fileName.ToTitleCase(); var info = $"Creating Database File for Entity {entityClassName}... {index + 1}/{length}"; var progress = (float)(index + 1) / length; UnityEditorUtility.DisplayProgressBar("Hold on...", info, progress); var rawInfoList = CreateMetadataEntityRawInfoList(settings, table); var entityClassType = GetEntityClassType(settings, entityClassName); if (entityClassType != null) { var entityDataList = CreateEntityDataList(settings, table, entityClassType, rawInfoList); typeof(MetadataAssetUtility).InvokeGenericStaticMethod("InsertEntityData", new[] { entityClassType }, new object[] { dbFolderPath, entityClassName, rawInfoList, entityDataList, index }); result = true; } else { UnityDebug.LogErrorFormat(null, "Can not find the entity class: {0}.cs!", entityClassName); result = false; } }); // Copy MetadataEntityDBConfig database file. if (result) { CopyDatabaseFile(dbFolderPath, MetadataEntityDBConfig.DatabaseLocalAddress); } UnityEditorUtility.ClearProgressBar(); return(result); }
private static bool GenerateMetadataEntityScript(MetadataAssetSettings settings, string entityScriptName, List <MetadataEntityRawInfo> rawInfoList) { try { entityScriptName = entityScriptName.ToTitleCase(); var scriptTextContent = ScriptTemplate.LoadScriptTemplateFile("NewMetadataEntityScriptTemplate.txt", UnityPackageName); scriptTextContent = scriptTextContent.Replace(ScriptTemplate.Placeholders.Namespace, settings.EntityScriptNamespace); scriptTextContent = scriptTextContent.Replace(ScriptTemplate.Placeholders.ScriptName, entityScriptName); scriptTextContent = scriptTextContent.Replace(ScriptTemplate.Placeholders.EnumInsideOfClass, GenerateEntityScriptEnumString(rawInfoList)); scriptTextContent = scriptTextContent.Replace(ScriptTemplate.Placeholders.Properties, GenerateEntityScriptPropertiesString(rawInfoList)); var scriptStorePath = EditorPath.ConvertToAbsolutePath(settings.EntityScriptsStorePath, $"{entityScriptName}.cs"); var assetPath = EditorPath.ConvertToAssetPath(scriptStorePath); File.WriteAllText(scriptStorePath, scriptTextContent, new UTF8Encoding(true)); AssetDatabase.ImportAsset(assetPath); return(true); } catch (Exception ex) { UnityDebug.LogError(ex.ToString()); return(false); } }