From fa332b45dff24f22439711748001540499abae0e Mon Sep 17 00:00:00 2001 From: VaDiM Date: Wed, 25 Sep 2024 00:26:09 +0300 Subject: [PATCH] Improve support of Unity 2023+ --- AssetStudio/AssetsManager.cs | 3 +++ AssetStudio/Classes/AnimationClip.cs | 36 +++++++++++++++++----------- AssetStudio/Classes/Animator.cs | 11 ++++----- AssetStudio/Classes/BuildSettings.cs | 26 +++++++++----------- AssetStudio/Classes/Renderer.cs | 18 ++++++++------ 5 files changed, 52 insertions(+), 42 deletions(-) diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index ad584b2..fe6f293 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -563,6 +563,9 @@ namespace AssetStudio case ClassIDType.Avatar: obj = new Avatar(objectReader); break; + case ClassIDType.BuildSettings: + obj = new BuildSettings(objectReader); + break; case ClassIDType.Font: obj = new Font(objectReader); break; diff --git a/AssetStudio/Classes/AnimationClip.cs b/AssetStudio/Classes/AnimationClip.cs index f3ecdcf..e4ee63d 100644 --- a/AssetStudio/Classes/AnimationClip.cs +++ b/AssetStudio/Classes/AnimationClip.cs @@ -45,7 +45,6 @@ namespace AssetStudio public AnimationCurve(ObjectReader reader, Func readerFunc) { - var version = reader.version; int numCurves = reader.ReadInt32(); m_Curve = new Keyframe[numCurves]; for (int i = 0; i < numCurves; i++) @@ -55,7 +54,7 @@ namespace AssetStudio m_PreInfinity = reader.ReadInt32(); m_PostInfinity = reader.ReadInt32(); - if (version >= (5, 3)) //5.3 and up + if (reader.version >= (5, 3)) //5.3 and up { m_RotationOrder = reader.ReadInt32(); } @@ -317,13 +316,12 @@ namespace AssetStudio public FloatCurve(ObjectReader reader) { - var version = reader.version; curve = new AnimationCurve(reader, reader.ReadSingle); attribute = reader.ReadAlignedString(); path = reader.ReadAlignedString(); classID = (ClassIDType)reader.ReadInt32(); script = new PPtr(reader); - if (version >= (2022, 2)) //2022.2 and up + if (reader.version >= (2022, 2)) //2022.2 and up { flags = reader.ReadInt32(); } @@ -357,7 +355,6 @@ namespace AssetStudio public PPtrCurve(ObjectReader reader) { - var version = reader.version; int numCurves = reader.ReadInt32(); curve = new PPtrKeyframe[numCurves]; for (int i = 0; i < numCurves; i++) @@ -369,7 +366,7 @@ namespace AssetStudio path = reader.ReadAlignedString(); classID = reader.ReadInt32(); script = new PPtr(reader); - if (version >= (2022, 2)) //2022.2 and up + if (reader.version >= (2022, 2)) //2022.2 and up { flags = reader.ReadInt32(); } @@ -506,8 +503,18 @@ namespace AssetStudio public StreamedClip(ObjectReader reader) { + var version = reader.version; data = reader.ReadUInt32Array(); - curveCount = reader.ReadUInt32(); + if (version.IsInRange((2022, 3, 19), 2023) //2022.3.19f1 to 2023 + || version >= (2023, 2, 8)) //2023.2.8f1 and up + { + curveCount = reader.ReadUInt16(); + var discreteCurveCount = reader.ReadUInt16(); + } + else + { + curveCount = reader.ReadUInt32(); + } } public class StreamedCurveKey @@ -644,9 +651,8 @@ namespace AssetStudio public ValueConstant(ObjectReader reader) { - var version = reader.version; m_ID = reader.ReadUInt32(); - if (version < (5, 5)) //5.5 down + if (reader.version < (5, 5)) //5.5 down { m_TypeID = reader.ReadUInt32(); } @@ -872,6 +878,7 @@ namespace AssetStudio public byte customType; public byte isPPtrCurve; public byte isIntCurve; + public byte isSerializeReferenceCurve; public GenericBinding() { } @@ -895,6 +902,10 @@ namespace AssetStudio { isIntCurve = reader.ReadByte(); } + if (version >= (2022, 2)) //2022.2 and up + { + isSerializeReferenceCurve = reader.ReadByte(); + } reader.AlignStream(); } } @@ -973,14 +984,12 @@ namespace AssetStudio public AnimationEvent(ObjectReader reader) { - var version = reader.version; - time = reader.ReadSingle(); functionName = reader.ReadAlignedString(); data = reader.ReadAlignedString(); objectReferenceParameter = new PPtr(reader); floatParameter = reader.ReadSingle(); - if (version >= 3) //3 and up + if (reader.version >= 3) //3 and up { intParameter = reader.ReadInt32(); } @@ -1052,8 +1061,7 @@ namespace AssetStudio else if (version >= 4)//4.0 and up { m_AnimationType = (AnimationType)reader.ReadInt32(); - if (m_AnimationType == AnimationType.Legacy) - m_Legacy = true; + m_Legacy = m_AnimationType == AnimationType.Legacy; } else { diff --git a/AssetStudio/Classes/Animator.cs b/AssetStudio/Classes/Animator.cs index 0f2ffa4..84d6416 100644 --- a/AssetStudio/Classes/Animator.cs +++ b/AssetStudio/Classes/Animator.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace AssetStudio +namespace AssetStudio { public sealed class Animator : Behaviour { @@ -35,6 +30,10 @@ namespace AssetStudio { var m_StabilizeFeet = reader.ReadBoolean(); } + if (version >= (2023, 1)) //2023.1 and up + { + var m_AnimatePhysics = reader.ReadBoolean(); + } reader.AlignStream(); } diff --git a/AssetStudio/Classes/BuildSettings.cs b/AssetStudio/Classes/BuildSettings.cs index 3c180fb..63fcad9 100644 --- a/AssetStudio/Classes/BuildSettings.cs +++ b/AssetStudio/Classes/BuildSettings.cs @@ -1,24 +1,20 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace AssetStudio +namespace AssetStudio { public sealed class BuildSettings : Object { - public string m_Version; + public string[] levels; + public string[] scenes; public BuildSettings(ObjectReader reader) : base(reader) { - var levels = reader.ReadStringArray(); - - var hasRenderTexture = reader.ReadBoolean(); - var hasPROVersion = reader.ReadBoolean(); - var hasPublishingRights = reader.ReadBoolean(); - var hasShadows = reader.ReadBoolean(); - - m_Version = reader.ReadAlignedString(); + if (reader.version < (5, 1)) //5.1 down + { + levels = reader.ReadStringArray(); + } + else + { + scenes = reader.ReadStringArray(); + } } } } diff --git a/AssetStudio/Classes/Renderer.cs b/AssetStudio/Classes/Renderer.cs index a62f6d5..4290111 100644 --- a/AssetStudio/Classes/Renderer.cs +++ b/AssetStudio/Classes/Renderer.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace AssetStudio +namespace AssetStudio { public class StaticBatchInfo { @@ -58,6 +53,15 @@ namespace AssetStudio { var m_RayTraceProcedural = reader.ReadByte(); } + if (version >= (2023, 2)) //2023.2 and up + { + var m_RayTracingAccelStructBuildFlagsOverride = reader.ReadByte(); + var m_RayTracingAccelStructBuildFlags = reader.ReadByte(); + } + if (version >= (2023, 3)) //2023.3 and up + { + var m_SmallMeshCulling = reader.ReadByte(); + } reader.AlignStream(); } else @@ -128,7 +132,7 @@ namespace AssetStudio var m_UseLightProbes = reader.ReadBoolean(); reader.AlignStream(); - if (version >= 5)//5.0 and up + if (version >= 5) //5.0 and up { var m_ReflectionProbeUsage = reader.ReadInt32(); }