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;
|
IUnityObjectBase? asset;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
asset = VersionManager.GetHandler(Version).AssetFactory.CreateAsset(assetInfo, Version);
|
asset = VersionManager.AssetFactory.CreateAsset(assetInfo, Version);
|
||||||
}
|
}
|
||||||
catch (TypeLoadException typeLoadException)
|
catch (TypeLoadException typeLoadException)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -121,7 +121,7 @@ namespace AssetRipper.Core.Parser.Files.SerializedFiles
|
|||||||
public T CreateAsset<T>(ClassIDType classID) where T : IUnityObjectBase
|
public T CreateAsset<T>(ClassIDType classID) where T : IUnityObjectBase
|
||||||
{
|
{
|
||||||
AssetInfo assetInfo = CreateAssetInfo(classID);
|
AssetInfo assetInfo = CreateAssetInfo(classID);
|
||||||
IUnityObjectBase asset = VersionManager.GetHandler(Version).AssetFactory.CreateAsset(assetInfo, Version);
|
IUnityObjectBase? asset = VersionManager.AssetFactory.CreateAsset(assetInfo, Version);
|
||||||
if (asset == null)
|
if (asset == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentException($"Could not create asset with id: {classID}", nameof(classID));
|
throw new ArgumentException($"Could not create asset with id: {classID}", nameof(classID));
|
||||||
|
|||||||
@ -26,12 +26,4 @@ namespace AssetRipper.Core.Project
|
|||||||
BuildTarget ExportPlatform { get; }
|
BuildTarget ExportPlatform { get; }
|
||||||
TransferInstructionFlags ExportFlags { 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))
|
if (MonoUtils.IsEngineStruct(this.Namespace, this.Name))
|
||||||
{
|
{
|
||||||
return VersionManager.GetHandler(version).AssetFactory.CreateEngineAsset(this.Name);
|
return VersionManager.AssetFactory.CreateEngineAsset(this.Name);
|
||||||
}
|
}
|
||||||
if (this.IsEnginePointer())
|
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.Parser.Asset;
|
||||||
using AssetRipper.Core.Logging;
|
|
||||||
using AssetRipper.Core.Parser.Files;
|
|
||||||
using AssetRipper.Core.Utils;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Reflection;
|
|
||||||
|
|
||||||
namespace AssetRipper.Core.VersionHandling
|
namespace AssetRipper.Core.VersionHandling
|
||||||
{
|
{
|
||||||
public static class VersionManager
|
public static class VersionManager
|
||||||
{
|
{
|
||||||
public static UnityHandlerBase LegacyHandler { get; set; }
|
private static AssetFactoryBase? _assetFactory;
|
||||||
|
public static AssetFactoryBase AssetFactory
|
||||||
public static UnityHandlerBase GetHandler(UnityVersion version)
|
|
||||||
{
|
{
|
||||||
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.Classes.Meta;
|
||||||
using AssetRipper.Core.Importers;
|
|
||||||
using AssetRipper.Core.Interfaces;
|
using AssetRipper.Core.Interfaces;
|
||||||
using AssetRipper.Core.Parser.Files.SerializedFiles;
|
using AssetRipper.Core.Parser.Files.SerializedFiles;
|
||||||
using AssetRipper.Core.Project.Exporters;
|
using AssetRipper.Core.Project.Exporters;
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
using AssetRipper.Core.Classes.Meta;
|
using AssetRipper.Core.Classes.Meta;
|
||||||
using AssetRipper.Core.Classes.Misc;
|
using AssetRipper.Core.Classes.Misc;
|
||||||
using AssetRipper.Core.Importers;
|
|
||||||
using AssetRipper.Core.Interfaces;
|
using AssetRipper.Core.Interfaces;
|
||||||
using AssetRipper.Core.Logging;
|
using AssetRipper.Core.Logging;
|
||||||
using AssetRipper.Core.Parser.Asset;
|
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.Meta;
|
||||||
using AssetRipper.Core.Classes.Misc;
|
using AssetRipper.Core.Classes.Misc;
|
||||||
using AssetRipper.Core.Importers;
|
|
||||||
using AssetRipper.Core.Interfaces;
|
using AssetRipper.Core.Interfaces;
|
||||||
using AssetRipper.Core.Parser.Files.SerializedFiles;
|
using AssetRipper.Core.Parser.Files.SerializedFiles;
|
||||||
using AssetRipper.Core.Project;
|
using AssetRipper.Core.Project;
|
||||||
|
|||||||
@ -49,8 +49,7 @@ namespace AssetRipper.Library
|
|||||||
{
|
{
|
||||||
static Ripper()
|
static Ripper()
|
||||||
{
|
{
|
||||||
VersionManager.LegacyHandler = new LegacyHandler();
|
VersionManager.AssetFactory = new AssetFactory();
|
||||||
Core.Importers.ImporterVersionHandler.SetLegacyImporter(new LegacyImporterFactory());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Ripper() : this(new()) { }
|
public Ripper() : this(new()) { }
|
||||||
|
|||||||
@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
## 0.2.0.2
|
## 0.2.0.2
|
||||||
* Bug fixing
|
* Bug fixing
|
||||||
* TextureImporter Yaml
|
* ~~TextureImporter Yaml~~
|
||||||
|
* ~~Other Importers~~
|
||||||
* Mesh export - STL, OBJ, FBX, PLY, GLB
|
* Mesh export - STL, OBJ, FBX, PLY, GLB
|
||||||
* Convert Unified Exporter to the new system
|
* Convert Unified Exporter to the new system
|
||||||
* Convert GLB Exporter to the new system
|
* Convert GLB Exporter to the new system
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user