diff --git a/AssetStudio/Classes/Animator.cs b/AssetStudio/Classes/Animator.cs index 8bee51d..c7f5046 100644 --- a/AssetStudio/Classes/Animator.cs +++ b/AssetStudio/Classes/Animator.cs @@ -31,6 +31,10 @@ namespace AssetStudio if (version[0] >= 5) //5.0 and up { var m_LinearVelocityBlending = reader.ReadBoolean(); + if (version[0] > 2021 || (version[0] == 2021 && version[1] >= 2)) //2021.2 and up + { + var m_StabilizeFeet = reader.ReadBoolean(); + } reader.AlignStream(); } diff --git a/AssetStudio/Classes/Shader.cs b/AssetStudio/Classes/Shader.cs index 1195503..e2aec8d 100644 --- a/AssetStudio/Classes/Shader.cs +++ b/AssetStudio/Classes/Shader.cs @@ -583,7 +583,7 @@ namespace AssetStudio m_BlobIndex = reader.ReadUInt32(); m_Channels = new ParserBindChannels(reader); - if (version[0] >= 2019) //2019 and up + if ((version[0] >= 2019 && version[0] < 2021) || (version[0] == 2021 && version[1] < 2)) //2019 ~2021.1 { var m_GlobalKeywordIndices = reader.ReadUInt16Array(); reader.AlignStream(); @@ -742,6 +742,7 @@ namespace AssetStudio public string m_Name; public string m_TextureName; public SerializedTagMap m_Tags; + public ushort[] m_SerializedKeywordStateMask; public SerializedPass(ObjectReader reader) { @@ -758,10 +759,13 @@ namespace AssetStudio reader.AlignStream(); m_Platforms = reader.ReadUInt8Array(); reader.AlignStream(); - m_LocalKeywordMask = reader.ReadUInt16Array(); - reader.AlignStream(); - m_GlobalKeywordMask = reader.ReadUInt16Array(); - reader.AlignStream(); + if (version[0] < 2021 || (version[0] == 2021 && version[1] < 2)) //2021.1 and down + { + m_LocalKeywordMask = reader.ReadUInt16Array(); + reader.AlignStream(); + m_GlobalKeywordMask = reader.ReadUInt16Array(); + reader.AlignStream(); + } } int numIndices = reader.ReadInt32(); @@ -793,6 +797,11 @@ namespace AssetStudio m_Name = reader.ReadAlignedString(); m_TextureName = reader.ReadAlignedString(); m_Tags = new SerializedTagMap(reader); + if (version[0] > 2021 || (version[0] == 2021 && version[1] >= 2)) //2021.2 and up + { + m_SerializedKeywordStateMask = reader.ReadUInt16Array(); + reader.AlignStream(); + } } } @@ -859,6 +868,8 @@ namespace AssetStudio { public SerializedProperties m_PropInfo; public SerializedSubShader[] m_SubShaders; + public string[] m_KeywordNames; + public byte[] m_KeywordFlags; public string m_Name; public string m_CustomEditorName; public string m_FallbackName; @@ -879,6 +890,13 @@ namespace AssetStudio m_SubShaders[i] = new SerializedSubShader(reader); } + if (version[0] > 2021 || (version[0] == 2021 && version[1] >= 2)) //2021.2 and up + { + m_KeywordNames = reader.ReadStringArray(); + m_KeywordFlags = reader.ReadUInt8Array(); + reader.AlignStream(); + } + m_Name = reader.ReadAlignedString(); m_CustomEditorName = reader.ReadAlignedString(); m_FallbackName = reader.ReadAlignedString();