mirror of
https://github.com/AssetRipper/AssetRipper.git
synced 2025-12-11 20:15:29 +01:00
Clean up unity version handling code
This commit is contained in:
parent
97e57a4bea
commit
21f4c5d2ae
@ -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)
|
||||
{
|
||||
|
||||
@ -121,7 +121,7 @@ namespace AssetRipper.Core.Parser.Files.SerializedFiles
|
||||
public T CreateAsset<T>(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));
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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())
|
||||
{
|
||||
|
||||
@ -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<uint, string> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
@ -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()) { }
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user