From 21f4c5d2ae811cc18f10fdf11de4edcf2b950c89 Mon Sep 17 00:00:00 2001 From: Jeremy Pritts Date: Mon, 16 May 2022 16:44:55 -0400 Subject: [PATCH] Clean up unity version handling code --- .../Files/SerializedFiles/SerializedFile.cs | 2 +- .../SerializedFiles/VirtualSerializedFile.cs | 2 +- .../Project/IExportContainer.cs | 8 ---- .../Assembly/Serializable/SerializableType.cs | 2 +- .../VersionHandling/UnityHandlerBase.cs | 41 ------------------- .../VersionHandling/VersionManager.cs | 22 +++++----- .../Importers/IAssetImporterFactory.cs | 12 ------ .../Importers/ImporterVersionHandler.cs | 17 -------- .../Collections/AssetExportCollection.cs | 1 - .../Collections/SceneExportCollection.cs | 1 - .../Parser/Asset/LegacyImporterFactory.cs | 24 ----------- .../VersionHandling/LegacyHandler.cs | 13 ------ .../Scripts/ScriptExportCollection.cs | 1 - AssetRipperLibrary/Ripper.cs | 3 +- docs/articles/RoadMap.md | 3 +- 15 files changed, 17 insertions(+), 135 deletions(-) delete mode 100644 AssetRipper.Fundamentals/VersionHandling/UnityHandlerBase.cs delete mode 100644 AssetRipperCommon/Importers/IAssetImporterFactory.cs delete mode 100644 AssetRipperCommon/Importers/ImporterVersionHandler.cs delete mode 100644 AssetRipperCore/Parser/Asset/LegacyImporterFactory.cs delete mode 100644 AssetRipperCore/VersionHandling/LegacyHandler.cs diff --git a/AssetRipper.Fundamentals/Parser/Files/SerializedFiles/SerializedFile.cs b/AssetRipper.Fundamentals/Parser/Files/SerializedFiles/SerializedFile.cs index 90fa0edc5..76243d471 100644 --- a/AssetRipper.Fundamentals/Parser/Files/SerializedFiles/SerializedFile.cs +++ b/AssetRipper.Fundamentals/Parser/Files/SerializedFiles/SerializedFile.cs @@ -336,7 +336,7 @@ namespace AssetRipper.Core.Parser.Files.SerializedFiles IUnityObjectBase? asset; try { - asset = VersionManager.GetHandler(Version).AssetFactory.CreateAsset(assetInfo, Version); + asset = VersionManager.AssetFactory.CreateAsset(assetInfo, Version); } catch (TypeLoadException typeLoadException) { diff --git a/AssetRipper.Fundamentals/Parser/Files/SerializedFiles/VirtualSerializedFile.cs b/AssetRipper.Fundamentals/Parser/Files/SerializedFiles/VirtualSerializedFile.cs index cae1bd19d..4e87c4b6b 100644 --- a/AssetRipper.Fundamentals/Parser/Files/SerializedFiles/VirtualSerializedFile.cs +++ b/AssetRipper.Fundamentals/Parser/Files/SerializedFiles/VirtualSerializedFile.cs @@ -121,7 +121,7 @@ namespace AssetRipper.Core.Parser.Files.SerializedFiles public T CreateAsset(ClassIDType classID) where T : IUnityObjectBase { AssetInfo assetInfo = CreateAssetInfo(classID); - IUnityObjectBase asset = VersionManager.GetHandler(Version).AssetFactory.CreateAsset(assetInfo, Version); + IUnityObjectBase? asset = VersionManager.AssetFactory.CreateAsset(assetInfo, Version); if (asset == null) { throw new ArgumentException($"Could not create asset with id: {classID}", nameof(classID)); diff --git a/AssetRipper.Fundamentals/Project/IExportContainer.cs b/AssetRipper.Fundamentals/Project/IExportContainer.cs index 8380a87ee..7f74473d1 100644 --- a/AssetRipper.Fundamentals/Project/IExportContainer.cs +++ b/AssetRipper.Fundamentals/Project/IExportContainer.cs @@ -26,12 +26,4 @@ namespace AssetRipper.Core.Project BuildTarget ExportPlatform { get; } TransferInstructionFlags ExportFlags { get; } } - - public static class ExportContainerExtensions - { - public static UnityHandlerBase GetExportHandler(this IExportContainer container) - { - return VersionManager.GetHandler(container.ExportVersion); - } - } } diff --git a/AssetRipper.Fundamentals/Structure/Assembly/Serializable/SerializableType.cs b/AssetRipper.Fundamentals/Structure/Assembly/Serializable/SerializableType.cs index b3bde83c0..7d8d2b625 100644 --- a/AssetRipper.Fundamentals/Structure/Assembly/Serializable/SerializableType.cs +++ b/AssetRipper.Fundamentals/Structure/Assembly/Serializable/SerializableType.cs @@ -45,7 +45,7 @@ namespace AssetRipper.Core.Structure.Assembly.Serializable { if (MonoUtils.IsEngineStruct(this.Namespace, this.Name)) { - return VersionManager.GetHandler(version).AssetFactory.CreateEngineAsset(this.Name); + return VersionManager.AssetFactory.CreateEngineAsset(this.Name); } if (this.IsEnginePointer()) { diff --git a/AssetRipper.Fundamentals/VersionHandling/UnityHandlerBase.cs b/AssetRipper.Fundamentals/VersionHandling/UnityHandlerBase.cs deleted file mode 100644 index 616a4c6a4..000000000 --- a/AssetRipper.Fundamentals/VersionHandling/UnityHandlerBase.cs +++ /dev/null @@ -1,41 +0,0 @@ -using AssetRipper.Core.Parser.Asset; -using AssetRipper.Core.Parser.Files; -using System; -using System.Collections.Generic; - -namespace AssetRipper.Core.VersionHandling -{ - public abstract class UnityHandlerBase - { - public UnityVersion UnityVersion { get; protected set; } - protected Type ClassIDTypeEnum { get; set; } - public AssetFactoryBase AssetFactory { get; protected set; } - protected Dictionary CommonStringDictionary { get; set; } - - public string GetCommonString(uint index) - { - if (CommonStringDictionary?.TryGetValue(index, out string result) ?? false) - return result; - else - return null; - } - - public string GetClassName(int idNumber) - { - return Enum.GetName(ClassIDTypeEnum, idNumber); - } - - public int GetIdNumber(string className) - { - if (Enum.TryParse(ClassIDTypeEnum, className, out var result)) - return (int)result; - else - return -1; - } - - public int[] GetAllValidIdNumbers() - { - return (int[])Enum.GetValues(ClassIDTypeEnum); - } - } -} diff --git a/AssetRipper.Fundamentals/VersionHandling/VersionManager.cs b/AssetRipper.Fundamentals/VersionHandling/VersionManager.cs index 6f8c1ca18..1673ad86e 100644 --- a/AssetRipper.Fundamentals/VersionHandling/VersionManager.cs +++ b/AssetRipper.Fundamentals/VersionHandling/VersionManager.cs @@ -1,21 +1,21 @@ -using AssetRipper.Core.Attributes; -using AssetRipper.Core.Logging; -using AssetRipper.Core.Parser.Files; -using AssetRipper.Core.Utils; +using AssetRipper.Core.Parser.Asset; using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; namespace AssetRipper.Core.VersionHandling { public static class VersionManager { - public static UnityHandlerBase LegacyHandler { get; set; } - - public static UnityHandlerBase GetHandler(UnityVersion version) + private static AssetFactoryBase? _assetFactory; + public static AssetFactoryBase AssetFactory { - return LegacyHandler; + get + { + return _assetFactory ?? throw new Exception("AssetFactory not set"); + } + set + { + _assetFactory = value; + } } } } diff --git a/AssetRipperCommon/Importers/IAssetImporterFactory.cs b/AssetRipperCommon/Importers/IAssetImporterFactory.cs deleted file mode 100644 index c622616bc..000000000 --- a/AssetRipperCommon/Importers/IAssetImporterFactory.cs +++ /dev/null @@ -1,12 +0,0 @@ -using AssetRipper.Core.Classes.Meta.Importers; -using AssetRipper.Core.Layout; - -namespace AssetRipper.Core.Importers -{ - public interface IAssetImporterFactory - { - IDefaultImporter CreateDefaultImporter(LayoutInfo layout); - IMonoImporter CreateMonoImporter(LayoutInfo layout); - INativeFormatImporter CreateNativeFormatImporter(LayoutInfo layout); - } -} diff --git a/AssetRipperCommon/Importers/ImporterVersionHandler.cs b/AssetRipperCommon/Importers/ImporterVersionHandler.cs deleted file mode 100644 index c5fa6d8fc..000000000 --- a/AssetRipperCommon/Importers/ImporterVersionHandler.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace AssetRipper.Core.Importers -{ - public static class ImporterVersionHandler - { - private static IAssetImporterFactory legacyImporter; - - public static void SetLegacyImporter(IAssetImporterFactory importerFactory) - { - legacyImporter = importerFactory; - } - - public static IAssetImporterFactory GetImporterFactory(UnityVersion version) - { - return legacyImporter; - } - } -} diff --git a/AssetRipperCommon/Project/Collections/AssetExportCollection.cs b/AssetRipperCommon/Project/Collections/AssetExportCollection.cs index ea64d8675..42e29a948 100644 --- a/AssetRipperCommon/Project/Collections/AssetExportCollection.cs +++ b/AssetRipperCommon/Project/Collections/AssetExportCollection.cs @@ -1,5 +1,4 @@ using AssetRipper.Core.Classes.Meta; -using AssetRipper.Core.Importers; using AssetRipper.Core.Interfaces; using AssetRipper.Core.Parser.Files.SerializedFiles; using AssetRipper.Core.Project.Exporters; diff --git a/AssetRipperCommon/Project/Collections/SceneExportCollection.cs b/AssetRipperCommon/Project/Collections/SceneExportCollection.cs index e3f2d78a9..cb847f18f 100644 --- a/AssetRipperCommon/Project/Collections/SceneExportCollection.cs +++ b/AssetRipperCommon/Project/Collections/SceneExportCollection.cs @@ -1,6 +1,5 @@ using AssetRipper.Core.Classes.Meta; using AssetRipper.Core.Classes.Misc; -using AssetRipper.Core.Importers; using AssetRipper.Core.Interfaces; using AssetRipper.Core.Logging; using AssetRipper.Core.Parser.Asset; diff --git a/AssetRipperCore/Parser/Asset/LegacyImporterFactory.cs b/AssetRipperCore/Parser/Asset/LegacyImporterFactory.cs deleted file mode 100644 index 896c44924..000000000 --- a/AssetRipperCore/Parser/Asset/LegacyImporterFactory.cs +++ /dev/null @@ -1,24 +0,0 @@ -using AssetRipper.Core.Classes.Meta.Importers; -using AssetRipper.Core.Importers; -using AssetRipper.Core.Layout; - -namespace AssetRipper.Core.Parser.Asset -{ - public class LegacyImporterFactory : IAssetImporterFactory - { - public IDefaultImporter CreateDefaultImporter(LayoutInfo layout) - { - return new DefaultImporter(layout); - } - - public IMonoImporter CreateMonoImporter(LayoutInfo layout) - { - return new MonoImporter(layout); - } - - public INativeFormatImporter CreateNativeFormatImporter(LayoutInfo layout) - { - return new NativeFormatImporter(layout); - } - } -} diff --git a/AssetRipperCore/VersionHandling/LegacyHandler.cs b/AssetRipperCore/VersionHandling/LegacyHandler.cs deleted file mode 100644 index ce7bcc85a..000000000 --- a/AssetRipperCore/VersionHandling/LegacyHandler.cs +++ /dev/null @@ -1,13 +0,0 @@ -using AssetRipper.Core.Parser.Asset; - -namespace AssetRipper.Core.VersionHandling -{ - public class LegacyHandler : UnityHandlerBase - { - public LegacyHandler() - { - this.AssetFactory = new AssetFactory(); - ClassIDTypeEnum = typeof(ClassIDType); - } - } -} diff --git a/AssetRipperLibrary/Exporters/Scripts/ScriptExportCollection.cs b/AssetRipperLibrary/Exporters/Scripts/ScriptExportCollection.cs index c5770ac0e..2d64d14a2 100644 --- a/AssetRipperLibrary/Exporters/Scripts/ScriptExportCollection.cs +++ b/AssetRipperLibrary/Exporters/Scripts/ScriptExportCollection.cs @@ -1,6 +1,5 @@ using AssetRipper.Core.Classes.Meta; using AssetRipper.Core.Classes.Misc; -using AssetRipper.Core.Importers; using AssetRipper.Core.Interfaces; using AssetRipper.Core.Parser.Files.SerializedFiles; using AssetRipper.Core.Project; diff --git a/AssetRipperLibrary/Ripper.cs b/AssetRipperLibrary/Ripper.cs index 21762c999..66159b461 100644 --- a/AssetRipperLibrary/Ripper.cs +++ b/AssetRipperLibrary/Ripper.cs @@ -49,8 +49,7 @@ namespace AssetRipper.Library { static Ripper() { - VersionManager.LegacyHandler = new LegacyHandler(); - Core.Importers.ImporterVersionHandler.SetLegacyImporter(new LegacyImporterFactory()); + VersionManager.AssetFactory = new AssetFactory(); } public Ripper() : this(new()) { } diff --git a/docs/articles/RoadMap.md b/docs/articles/RoadMap.md index 60d0ad58f..5c8a63bf6 100644 --- a/docs/articles/RoadMap.md +++ b/docs/articles/RoadMap.md @@ -2,7 +2,8 @@ ## 0.2.0.2 * Bug fixing - * TextureImporter Yaml + * ~~TextureImporter Yaml~~ + * ~~Other Importers~~ * Mesh export - STL, OBJ, FBX, PLY, GLB * Convert Unified Exporter to the new system * Convert GLB Exporter to the new system