diff --git a/Source/AssetRipper.Assets/IO/Reading/AssetReader.cs b/Source/AssetRipper.Assets/IO/Reading/AssetReader.cs deleted file mode 100644 index 0e9ff6bf3..000000000 --- a/Source/AssetRipper.Assets/IO/Reading/AssetReader.cs +++ /dev/null @@ -1,31 +0,0 @@ -using AssetRipper.Assets.Collections; -using AssetRipper.IO.Endian; - -namespace AssetRipper.Assets.IO.Reading -{ - public sealed class AssetReader : EndianReader - { - public AssetReader(Stream stream, AssetCollection assetCollection) : base(stream, assetCollection.EndianType, false) - { - AssetCollection = assetCollection; - } - - public override string ReadString() - { - int length = ReadInt32(); - - if (length == 0) - { - return string.Empty; - } - - string ret = ReadString(length); - AlignStream(); - //Strings have supposedly been aligned since 2.1.0, - //which is earlier than the beginning of AssetRipper version support. - return ret; - } - - public AssetCollection AssetCollection { get; } - } -} diff --git a/Source/AssetRipper.Assets/IO/Reading/EndianSpanReadableExtensions.cs b/Source/AssetRipper.Assets/IO/Reading/EndianSpanReadableExtensions.cs deleted file mode 100644 index 9e2ca907a..000000000 --- a/Source/AssetRipper.Assets/IO/Reading/EndianSpanReadableExtensions.cs +++ /dev/null @@ -1,19 +0,0 @@ -using AssetRipper.IO.Endian; -using AssetRipper.IO.Files.SerializedFiles; - -namespace AssetRipper.Assets.IO.Reading; - -public static class EndianSpanReadableExtensions -{ - public static void Read(this IEndianSpanReadable asset, ref EndianSpanReader reader, TransferInstructionFlags flags) - { - if (flags.IsRelease()) - { - asset.ReadRelease(ref reader); - } - else - { - asset.ReadEditor(ref reader); - } - } -} diff --git a/Source/AssetRipper.Assets/IO/Reading/IAssetReadable.cs b/Source/AssetRipper.Assets/IO/Reading/IAssetReadable.cs deleted file mode 100644 index 1d2f3ff62..000000000 --- a/Source/AssetRipper.Assets/IO/Reading/IAssetReadable.cs +++ /dev/null @@ -1,29 +0,0 @@ -using AssetRipper.IO.Files.SerializedFiles; - -namespace AssetRipper.Assets.IO.Reading -{ - public interface IAssetReadable - { - void ReadEditor(AssetReader reader); - void ReadRelease(AssetReader reader); - } - public static class AssetReadableExtensions - { - public static void Read(this IAssetReadable asset, AssetReader reader) - { - asset.Read(reader, reader.AssetCollection.Flags); - } - - public static void Read(this IAssetReadable asset, AssetReader reader, TransferInstructionFlags flags) - { - if (flags.IsRelease()) - { - asset.ReadRelease(reader); - } - else - { - asset.ReadEditor(reader); - } - } - } -} diff --git a/Source/AssetRipper.Assets/IUnityAssetBase.cs b/Source/AssetRipper.Assets/IUnityAssetBase.cs index d40c705ae..4eb4ca381 100644 --- a/Source/AssetRipper.Assets/IUnityAssetBase.cs +++ b/Source/AssetRipper.Assets/IUnityAssetBase.cs @@ -4,6 +4,7 @@ using AssetRipper.Assets.IO.Serialization; using AssetRipper.Assets.IO.Writing; using AssetRipper.Assets.Metadata; using AssetRipper.IO.Endian; +using AssetRipper.IO.Files.SerializedFiles; using System.Text.Json.Nodes; namespace AssetRipper.Assets; @@ -33,3 +34,17 @@ public interface IUnityAssetBase : IEndianSpanReadable, IAssetWritable, IYamlExp JsonNode SerializeReleaseFields(IUnityAssetSerializer serializer, SerializationOptions options); IEnumerable<(string, PPtr)> FetchDependencies(); } +public static class UnityAssetBaseExtensions +{ + public static void Read(this IUnityAssetBase asset, ref EndianSpanReader reader, TransferInstructionFlags flags) + { + if (flags.IsRelease()) + { + asset.ReadRelease(ref reader); + } + else + { + asset.ReadEditor(ref reader); + } + } +} diff --git a/Source/AssetRipper.Assets/IUnityObjectBase.cs b/Source/AssetRipper.Assets/IUnityObjectBase.cs index 488248dda..351ed1f19 100644 --- a/Source/AssetRipper.Assets/IUnityObjectBase.cs +++ b/Source/AssetRipper.Assets/IUnityObjectBase.cs @@ -1,6 +1,5 @@ using AssetRipper.Assets.Collections; using AssetRipper.Assets.Export; -using AssetRipper.Assets.IO.Reading; using AssetRipper.Assets.Metadata; using AssetRipper.IO.Endian; using AssetRipper.Yaml; diff --git a/Source/AssetRipper.Assets/UnityAssetBase.cs b/Source/AssetRipper.Assets/UnityAssetBase.cs index e85e558d6..49a1c1086 100644 --- a/Source/AssetRipper.Assets/UnityAssetBase.cs +++ b/Source/AssetRipper.Assets/UnityAssetBase.cs @@ -1,6 +1,5 @@ using AssetRipper.Assets.Cloning; using AssetRipper.Assets.Export; -using AssetRipper.Assets.IO.Reading; using AssetRipper.Assets.IO.Serialization; using AssetRipper.Assets.IO.Writing; using AssetRipper.Assets.Metadata; @@ -14,12 +13,8 @@ namespace AssetRipper.Assets; /// /// The artificial base class for all generated Unity classes /// -public abstract class UnityAssetBase : IUnityAssetBase, IAssetReadable +public abstract class UnityAssetBase : IUnityAssetBase { - public virtual void ReadEditor(AssetReader reader) => throw MethodNotSupported(); - - public virtual void ReadRelease(AssetReader reader) => throw MethodNotSupported(); - public virtual void ReadEditor(ref EndianSpanReader reader) => throw MethodNotSupported(); public virtual void ReadRelease(ref EndianSpanReader reader) => throw MethodNotSupported(); diff --git a/Source/AssetRipper.Export.Modules.Shader/AssetReader.cs b/Source/AssetRipper.Export.Modules.Shader/AssetReader.cs new file mode 100644 index 000000000..8fde7f018 --- /dev/null +++ b/Source/AssetRipper.Export.Modules.Shader/AssetReader.cs @@ -0,0 +1,30 @@ +using AssetRipper.Assets.Collections; +using AssetRipper.IO.Endian; + +namespace AssetRipper.Export.Modules.Shaders; + +public sealed class AssetReader : EndianReader +{ + public AssetReader(Stream stream, AssetCollection assetCollection) : base(stream, assetCollection.EndianType, false) + { + AssetCollection = assetCollection; + } + + public override string ReadString() + { + int length = ReadInt32(); + + if (length == 0) + { + return string.Empty; + } + + string ret = ReadString(length); + AlignStream(); + //Strings have supposedly been aligned since 2.1.0, + //which is earlier than the beginning of AssetRipper version support. + return ret; + } + + public AssetCollection AssetCollection { get; } +} diff --git a/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgram.cs b/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgram.cs index ac688bd4c..1f5286cc2 100644 --- a/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgram.cs +++ b/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgram.cs @@ -1,4 +1,3 @@ -using AssetRipper.Assets.IO.Reading; using AssetRipper.Assets.IO.Writing; using AssetRipper.Export.Modules.Shaders.ShaderBlob.Parameters; using AssetRipper.Primitives; diff --git a/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgramBlob.cs b/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgramBlob.cs index 298869c5b..792c2ad7f 100644 --- a/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgramBlob.cs +++ b/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgramBlob.cs @@ -1,6 +1,5 @@ using AssetRipper.Assets.Collections; using AssetRipper.Assets.Generics; -using AssetRipper.Assets.IO.Reading; using AssetRipper.Assets.IO.Writing; using K4os.Compression.LZ4; diff --git a/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgramEntry.cs b/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgramEntry.cs index 261046958..96bdd8ebd 100644 --- a/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgramEntry.cs +++ b/Source/AssetRipper.Export.Modules.Shader/ShaderBlob/ShaderSubProgramEntry.cs @@ -1,5 +1,4 @@ -using AssetRipper.Assets.IO.Reading; -using AssetRipper.Assets.IO.Writing; +using AssetRipper.Assets.IO.Writing; using AssetRipper.Primitives; namespace AssetRipper.Export.Modules.Shaders.ShaderBlob diff --git a/Source/AssetRipper.Import/AssetCreation/GameAssetFactory.cs b/Source/AssetRipper.Import/AssetCreation/GameAssetFactory.cs index daa908b56..e0f4a3692 100644 --- a/Source/AssetRipper.Import/AssetCreation/GameAssetFactory.cs +++ b/Source/AssetRipper.Import/AssetCreation/GameAssetFactory.cs @@ -1,7 +1,6 @@ using AssetRipper.Assets; using AssetRipper.Assets.Generics; using AssetRipper.Assets.IO; -using AssetRipper.Assets.IO.Reading; using AssetRipper.Assets.Metadata; using AssetRipper.Import.Logging; using AssetRipper.Import.Structure.Assembly.Managers; diff --git a/Source/AssetRipper.Import/Structure/Assembly/Serializable/SerializableField.cs b/Source/AssetRipper.Import/Structure/Assembly/Serializable/SerializableField.cs index e2e47ca1e..018a338b8 100644 --- a/Source/AssetRipper.Import/Structure/Assembly/Serializable/SerializableField.cs +++ b/Source/AssetRipper.Import/Structure/Assembly/Serializable/SerializableField.cs @@ -2,7 +2,6 @@ using AssetRipper.Assets; using AssetRipper.Assets.Cloning; using AssetRipper.Assets.Export; using AssetRipper.Assets.Export.Yaml; -using AssetRipper.Assets.IO.Reading; using AssetRipper.Assets.IO.Writing; using AssetRipper.Assets.Metadata; using AssetRipper.IO.Endian;