internal static bool GenerateMetadataEntityScripts() { var result = false; var settings = MetadataAssetSettings.Load(); MetadataAssetSettings.CreateEntityScriptsStoreFolder(settings); if (string.IsNullOrEmpty(settings.ExcelWorkbookFilesFolderPath)) { if (UnityEditorUtility.DisplayDialog("Error", "'Excel Workbook Files Folder Path' is not valid path!", "OK")) { UnityEditorUtility.ClearProgressBar(); } } else { ForEachExcelFile(settings.ExcelWorkbookFilesFolderPath, (table, fileName, index, length) => { if (table == null) { return; } var info = $"Generating Metadata Entity Script: {fileName}.cs... {index + 1}/{length}"; var progress = (float)(index + 1) / length; UnityEditorUtility.DisplayProgressBar("Hold on...", info, progress); var rawInfoList = CreateMetadataEntityRawInfoList(settings, table); result = GenerateMetadataEntityScript(settings, fileName, rawInfoList); }); } UnityEditorUtility.ClearProgressBar(); return(result); }
private static void EncryptFileRawData(string filePath) { var settings = MetadataAssetSettings.Load(); var rawData = File.ReadAllBytes(filePath); var dataEncryptionFlag = BitConverter.GetBytes(settings.DataEncryptionAndDecryption); using var writer = new BinaryWriter(new MemoryStream()); // Write flag to judge if data need to decryption writer.Write(dataEncryptionFlag); if (settings.DataEncryptionAndDecryption) { // Write key and cipher data var key = CryptoUtility.GenerateRandomKey(MetadataManager.EncryptionKeyLength); var cipherData = CryptoUtility.AesEncrypt(rawData, key); writer.Write(key); writer.Write(cipherData); } else { // Write raw data writer.Write(rawData); } var bufferData = ((MemoryStream)writer.BaseStream).GetBuffer(); File.WriteAllBytes(filePath, bufferData); }
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); }