Support 2020.2

This commit is contained in:
Perfare 2021-01-14 05:23:19 +08:00
parent e1cf36aa3c
commit 32ce032655
10 changed files with 85 additions and 29 deletions

View File

@ -174,7 +174,7 @@ namespace AssetStudio
GetStreams(version); GetStreams(version);
} }
m_DataSize = reader.ReadBytes(reader.ReadInt32()); m_DataSize = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
} }
@ -653,9 +653,9 @@ namespace AssetStudio
if (version[0] >= 5) //5.0 and up if (version[0] >= 5) //5.0 and up
{ {
var m_BakedConvexCollisionMesh = reader.ReadBytes(reader.ReadInt32()); var m_BakedConvexCollisionMesh = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
var m_BakedTriangleCollisionMesh = reader.ReadBytes(reader.ReadInt32()); var m_BakedTriangleCollisionMesh = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
} }

View File

@ -15,7 +15,7 @@ namespace AssetStudio
var m_Loop = reader.ReadBoolean(); var m_Loop = reader.ReadBoolean();
reader.AlignStream(); reader.AlignStream();
m_AudioClip = new PPtr<AudioClip>(reader); m_AudioClip = new PPtr<AudioClip>(reader);
m_MovieData = reader.ReadBytes(reader.ReadInt32()); m_MovieData = reader.ReadUInt8Array();
} }
} }
} }

View File

@ -5,6 +5,16 @@ using System.Linq;
namespace AssetStudio namespace AssetStudio
{ {
public class Hash128
{
public byte[] bytes;
public Hash128(BinaryReader reader)
{
bytes = reader.ReadBytes(16);
}
}
public class StructParameter public class StructParameter
{ {
public MatrixParameter[] m_MatrixParams; public MatrixParameter[] m_MatrixParams;
@ -599,6 +609,10 @@ namespace AssetStudio
public class SerializedPass public class SerializedPass
{ {
public Hash128[] m_EditorDataHash;
public byte[] m_Platforms;
public ushort[] m_LocalKeywordMask;
public ushort[] m_GlobalKeywordMask;
public KeyValuePair<string, int>[] m_NameIndices; public KeyValuePair<string, int>[] m_NameIndices;
public PassType m_Type; public PassType m_Type;
public SerializedShaderState m_State; public SerializedShaderState m_State;
@ -619,6 +633,23 @@ namespace AssetStudio
{ {
var version = reader.version; var version = reader.version;
if (version[0] > 2020 || (version[0] == 2020 && version[1] >= 2)) //2020.2 and up
{
int numEditorDataHash = reader.ReadInt32();
m_EditorDataHash = new Hash128[numEditorDataHash];
for (int i = 0; i < numEditorDataHash; i++)
{
m_EditorDataHash[i] = new Hash128(reader);
}
reader.AlignStream();
m_Platforms = reader.ReadUInt8Array();
reader.AlignStream();
m_LocalKeywordMask = reader.ReadUInt16Array();
reader.AlignStream();
m_GlobalKeywordMask = reader.ReadUInt16Array();
reader.AlignStream();
}
int numIndices = reader.ReadInt32(); int numIndices = reader.ReadInt32();
m_NameIndices = new KeyValuePair<string, int>[numIndices]; m_NameIndices = new KeyValuePair<string, int>[numIndices];
for (int i = 0; i < numIndices; i++) for (int i = 0; i < numIndices; i++)
@ -793,17 +824,17 @@ namespace AssetStudio
compressedLengths = reader.ReadUInt32Array(); compressedLengths = reader.ReadUInt32Array();
decompressedLengths = reader.ReadUInt32Array(); decompressedLengths = reader.ReadUInt32Array();
} }
compressedBlob = reader.ReadBytes(reader.ReadInt32()); compressedBlob = reader.ReadUInt8Array();
} }
else else
{ {
m_Script = reader.ReadBytes(reader.ReadInt32()); m_Script = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
var m_PathName = reader.ReadAlignedString(); var m_PathName = reader.ReadAlignedString();
if (version[0] == 5 && version[1] >= 3) //5.3 - 5.4 if (version[0] == 5 && version[1] >= 3) //5.3 - 5.4
{ {
decompressedSize = reader.ReadUInt32(); decompressedSize = reader.ReadUInt32();
m_SubProgramBlob = reader.ReadBytes(reader.ReadInt32()); m_SubProgramBlob = reader.ReadUInt8Array();
} }
} }
} }

View File

@ -124,7 +124,7 @@ namespace AssetStudio
m_SubMeshes[i] = new SubMesh(reader); m_SubMeshes[i] = new SubMesh(reader);
} }
m_IndexBuffer = reader.ReadBytes(reader.ReadInt32()); m_IndexBuffer = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
m_VertexData = new VertexData(reader); m_VertexData = new VertexData(reader);

View File

@ -13,6 +13,7 @@ namespace AssetStudio
public Vector4 uvTransform; public Vector4 uvTransform;
public float downscaleMultiplier; public float downscaleMultiplier;
public SpriteSettings settingsRaw; public SpriteSettings settingsRaw;
public SecondarySpriteTexture[] secondaryTextures;
public SpriteAtlasData(ObjectReader reader) public SpriteAtlasData(ObjectReader reader)
{ {
@ -28,6 +29,16 @@ namespace AssetStudio
uvTransform = reader.ReadVector4(); uvTransform = reader.ReadVector4();
downscaleMultiplier = reader.ReadSingle(); downscaleMultiplier = reader.ReadSingle();
settingsRaw = new SpriteSettings(reader); settingsRaw = new SpriteSettings(reader);
if (version[0] > 2020 || (version[0] == 2020 && version[1] >= 2)) //2020.2 and up
{
var secondaryTexturesSize = reader.ReadInt32();
secondaryTextures = new SecondarySpriteTexture[secondaryTexturesSize];
for (int i = 0; i < secondaryTexturesSize; i++)
{
secondaryTextures[i] = new SecondarySpriteTexture(reader);
}
reader.AlignStream();
}
} }
} }

View File

@ -12,7 +12,7 @@ namespace AssetStudio
public TextAsset(ObjectReader reader) : base(reader) public TextAsset(ObjectReader reader) : base(reader)
{ {
m_Script = reader.ReadBytes(reader.ReadInt32()); m_Script = reader.ReadUInt8Array();
} }
} }
} }

View File

@ -13,6 +13,10 @@ namespace AssetStudio
{ {
var m_ForcedFallbackFormat = reader.ReadInt32(); var m_ForcedFallbackFormat = reader.ReadInt32();
var m_DownscaleFallback = reader.ReadBoolean(); var m_DownscaleFallback = reader.ReadBoolean();
if (version[0] > 2020 || (version[0] == 2020 && version[1] >= 2)) //2020.2 and up
{
var m_IsAlphaChannelOptional = reader.ReadBoolean();
}
reader.AlignStream(); reader.AlignStream();
} }
} }

View File

@ -120,6 +120,11 @@ namespace AssetStudio
{ {
var m_ColorSpace = reader.ReadInt32(); var m_ColorSpace = reader.ReadInt32();
} }
if (version[0] > 2020 || (version[0] == 2020 && version[1] >= 2)) //2020.2 and up
{
var m_PlatformBlob = reader.ReadUInt8Array();
reader.AlignStream();
}
var image_data_size = reader.ReadInt32(); var image_data_size = reader.ReadInt32();
if (image_data_size == 0 && ((version[0] == 5 && version[1] >= 3) || version[0] > 5))//5.3.0 and up if (image_data_size == 0 && ((version[0] == 5 && version[1] >= 3) || version[0] > 5))//5.3.0 and up
{ {

View File

@ -102,6 +102,11 @@ namespace AssetStudio
return ReadArray(reader.ReadBoolean, reader.ReadInt32()); return ReadArray(reader.ReadBoolean, reader.ReadInt32());
} }
public static byte[] ReadUInt8Array(this BinaryReader reader)
{
return reader.ReadBytes(reader.ReadInt32());
}
public static ushort[] ReadUInt16Array(this BinaryReader reader) public static ushort[] ReadUInt16Array(this BinaryReader reader)
{ {
return ReadArray(reader.ReadUInt16, reader.ReadInt32()); return ReadArray(reader.ReadUInt16, reader.ReadInt32());

View File

@ -663,7 +663,7 @@ namespace AssetStudio
m_LocalKeywords[i] = reader.ReadAlignedString(); m_LocalKeywords[i] = reader.ReadAlignedString();
} }
} }
m_ProgramCode = reader.ReadBytes(reader.ReadInt32()); m_ProgramCode = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
//TODO //TODO