diff --git a/AssetStudio/Classes/AnimationClip.cs b/AssetStudio/Classes/AnimationClip.cs index 0f79526..2eca1b8 100644 --- a/AssetStudio/Classes/AnimationClip.cs +++ b/AssetStudio/Classes/AnimationClip.cs @@ -588,7 +588,7 @@ namespace AssetStudio } public PPtrKeyframe(float time, PPtr script) { - time = time; + this.time = time; value = script; } diff --git a/AssetStudio/Classes/AnimatorController.cs b/AssetStudio/Classes/AnimatorController.cs index 833ed66..905b13c 100644 --- a/AssetStudio/Classes/AnimatorController.cs +++ b/AssetStudio/Classes/AnimatorController.cs @@ -588,10 +588,10 @@ namespace AssetStudio var m_Controller = new ControllerConstant(reader); int tosSize = reader.ReadInt32(); - var m_TOS = new KeyValuePair[tosSize]; + var m_TOS = new Dictionary(tosSize); for (int i = 0; i < tosSize; i++) { - m_TOS[i] = new KeyValuePair(reader.ReadUInt32(), reader.ReadAlignedString()); + m_TOS.Add(reader.ReadUInt32(), reader.ReadAlignedString()); } int numClips = reader.ReadInt32(); diff --git a/AssetStudio/Classes/AssetBundle.cs b/AssetStudio/Classes/AssetBundle.cs index 0426a7d..ea587c3 100644 --- a/AssetStudio/Classes/AssetBundle.cs +++ b/AssetStudio/Classes/AssetBundle.cs @@ -65,14 +65,12 @@ namespace AssetStudio } if (reader.Game.Name == "CB1" || reader.Game.Name == "CB2") { - reader.AlignStream(); IsStreamedScenessetBundle = reader.ReadBoolean(); reader.AlignStream(); PathFlags = reader.ReadInt32(); } else if (reader.Game.Name == "CB3") { - reader.AlignStream(); IsStreamedScenessetBundle = reader.ReadBoolean(); reader.AlignStream(); ExplicitDataLayout = reader.ReadInt32(); @@ -80,7 +78,6 @@ namespace AssetStudio } else if (reader.Game.Name == "GI") { - reader.AlignStream(); IsStreamedScenessetBundle = reader.ReadBoolean(); reader.AlignStream(); ExplicitDataLayout = reader.ReadInt32(); diff --git a/AssetStudio/Classes/Avatar.cs b/AssetStudio/Classes/Avatar.cs index 97505ab..e2a8932 100644 --- a/AssetStudio/Classes/Avatar.cs +++ b/AssetStudio/Classes/Avatar.cs @@ -287,7 +287,7 @@ namespace AssetStudio { public uint m_AvatarSize; public AvatarConstant m_Avatar; - public KeyValuePair[] m_TOS; + public Dictionary m_TOS; public Avatar(ObjectReader reader) : base(reader) { @@ -295,10 +295,10 @@ namespace AssetStudio m_Avatar = new AvatarConstant(reader); int numTOS = reader.ReadInt32(); - m_TOS = new KeyValuePair[numTOS]; + m_TOS = new Dictionary(numTOS); for (int i = 0; i < numTOS; i++) { - m_TOS[i] = new KeyValuePair(reader.ReadUInt32(), reader.ReadAlignedString()); + m_TOS.Add(reader.ReadUInt32(), reader.ReadAlignedString()); } //HumanDescription m_HumanDescription 2019 and up @@ -306,7 +306,8 @@ namespace AssetStudio public string FindBonePath(uint hash) { - return m_TOS.FirstOrDefault(pair => pair.Key == hash).Value; + m_TOS.TryGetValue(hash, out string path); + return path; } } } diff --git a/AssetStudio/Classes/IndexObject.cs b/AssetStudio/Classes/IndexObject.cs index 6adb113..b94ed6b 100644 --- a/AssetStudio/Classes/IndexObject.cs +++ b/AssetStudio/Classes/IndexObject.cs @@ -21,19 +21,19 @@ namespace AssetStudio public static bool Exportable; public int Count; - public KeyValuePair[] AssetMap; + public Dictionary AssetMap; public Dictionary Names = new Dictionary(); public IndexObject(ObjectReader reader) : base(reader) { Count = reader.ReadInt32(); - AssetMap = new KeyValuePair[Count]; + AssetMap = new Dictionary(Count); for (int i = 0; i < Count; i++) { var key = reader.ReadAlignedString(); var value = new Index(reader); - AssetMap[i] = new KeyValuePair(key, value); + AssetMap.Add(key, value); if (value.Object.m_FileID == 0) Names.Add(value.Object.m_PathID, key); diff --git a/AssetStudio/Classes/Mesh.cs b/AssetStudio/Classes/Mesh.cs index 1cac01f..043f039 100644 --- a/AssetStudio/Classes/Mesh.cs +++ b/AssetStudio/Classes/Mesh.cs @@ -704,29 +704,25 @@ namespace AssetStudio var m_CompressLevelTexCoordinates = reader.ReadInt32(); } - if (version[0] > 2018 || (version[0] == 2018 && version[1] >= 2)) //2018.2 and up + if (reader.Game.Name == "GI" || reader.Game.Name == "CB1" || reader.Game.Name == "CB2" || reader.Game.Name == "CB3" + || version[0] > 2018 || (version[0] == 2018 && version[1] >= 2)) //2018.2 and up { var m_MeshMetrics = new float[2]; m_MeshMetrics[0] = reader.ReadSingle(); m_MeshMetrics[1] = reader.ReadSingle(); } - if (reader.Game.Name == "GI" || reader.Game.Name == "CB2" || reader.Game.Name == "CB3") + if (reader.Game.Name == "GI" || reader.Game.Name == "CB1" || reader.Game.Name == "CB2" || reader.Game.Name == "CB3") { var m_MetricsDirty = reader.ReadBoolean(); reader.AlignStream(); - var m_CloseMeshDynamicCompression = reader.ReadInt32(); - reader.AlignStream(); - var m_IsStreamingMesh = reader.ReadInt32(); - reader.AlignStream(); - } - - if (reader.Game.Name == "CB1") - { - var m_MetricsDirty = reader.ReadBoolean(); - reader.AlignStream(); - var m_CloseMeshDynamicCompression = reader.ReadInt32(); + var m_CloseMeshDynamicCompression = reader.ReadBoolean(); reader.AlignStream(); + if (reader.Game.Name != "CB1") + { + var m_IsStreamingMesh = reader.ReadBoolean(); + reader.AlignStream(); + } } if (version[0] > 2018 || (version[0] == 2018 && version[1] >= 3)) //2018.3 and up diff --git a/AssetStudio/Classes/Renderer.cs b/AssetStudio/Classes/Renderer.cs index 3be24ab..ac43772 100644 --- a/AssetStudio/Classes/Renderer.cs +++ b/AssetStudio/Classes/Renderer.cs @@ -24,7 +24,7 @@ namespace AssetStudio public PPtr[] m_Materials; public StaticBatchInfo m_StaticBatchInfo; public uint[] m_SubsetIndices; - public bool isNewHeader = false; + private bool isNewHeader = false; protected Renderer(ObjectReader reader) : base(reader) { if (version[0] < 5) //5.0 down @@ -77,10 +77,10 @@ namespace AssetStudio var m_IsTerrainTessInfo = reader.ReadByte(); if (isNewHeader) { - var m_AllowPerMaterialProp = reader.ReadByte(); - var m_IsHQDynamicAOOccluder = reader.ReadByte(); var m_UseVertexLightInForward = reader.ReadByte(); var m_CombineSubMeshInGeoPass = reader.ReadByte(); + var m_AllowPerMaterialProp = reader.ReadByte(); + var m_IsHQDynamicAOOccluder = reader.ReadByte(); } } } diff --git a/AssetStudio/Classes/Shader.cs b/AssetStudio/Classes/Shader.cs index d28e18c..772ef99 100644 --- a/AssetStudio/Classes/Shader.cs +++ b/AssetStudio/Classes/Shader.cs @@ -429,7 +429,7 @@ namespace AssetStudio if ((version[0] == 2020 && version[1] > 3) || (version[0] == 2020 && version[1] == 3 && version[2] >= 2) || //2020.3.2f1 and up (version[0] == 2021 && version[1] > 1) || - (version[0] == 2021 && version[1] == 1 && version[2] >= 1)) //2021.1.1f1 and up + (version[0] == 2021 && version[1] == 1 && version[2] >= 4)) //2021.1.4f1 and up { m_IsPartialCB = reader.ReadBoolean(); reader.AlignStream(); @@ -705,7 +705,7 @@ namespace AssetStudio if ((version[0] == 2020 && version[1] > 3) || (version[0] == 2020 && version[1] == 3 && version[2] >= 2) || //2020.3.2f1 and up (version[0] == 2021 && version[1] > 1) || - (version[0] == 2021 && version[1] == 1 && version[2] >= 4)) //2021.1.4f1 and up + (version[0] == 2021 && version[1] == 1 && version[2] >= 1)) //2021.1.4f1 and up { m_CommonParameters = new SerializedProgramParameters(reader); }