improve SerializedType read
This commit is contained in:
parent
85cf134a49
commit
c71ceb7ea6
|
@ -112,7 +112,8 @@ namespace AssetStudio
|
||||||
{1083, "BoundsInt"},
|
{1083, "BoundsInt"},
|
||||||
{1093, "m_CorrespondingSourceObject"},
|
{1093, "m_CorrespondingSourceObject"},
|
||||||
{1121, "m_PrefabInstance"},
|
{1121, "m_PrefabInstance"},
|
||||||
{1138, "m_PrefabAsset"}
|
{1138, "m_PrefabAsset"},
|
||||||
|
{1152, "FileSize"}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -233,13 +233,22 @@ namespace AssetStudio
|
||||||
var typeTree = new List<TypeTreeNode>();
|
var typeTree = new List<TypeTreeNode>();
|
||||||
if (header.m_Version >= 12 || header.m_Version == 10)
|
if (header.m_Version >= 12 || header.m_Version == 10)
|
||||||
{
|
{
|
||||||
ReadTypeTree5(typeTree);
|
TypeTreeBlobRead(typeTree);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ReadTypeTree(typeTree);
|
ReadTypeTree(typeTree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (header.m_Version >= 21)
|
||||||
|
{
|
||||||
|
var count = reader.ReadInt32();
|
||||||
|
if (count > 0)
|
||||||
|
{
|
||||||
|
reader.Position += 4 * count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type.m_Nodes = typeTree;
|
type.m_Nodes = typeTree;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -276,13 +285,13 @@ namespace AssetStudio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ReadTypeTree5(List<TypeTreeNode> typeTree)
|
private void TypeTreeBlobRead(List<TypeTreeNode> typeTree)
|
||||||
{
|
{
|
||||||
int numberOfNodes = reader.ReadInt32();
|
int numberOfNodes = reader.ReadInt32();
|
||||||
int stringBufferSize = reader.ReadInt32();
|
int stringBufferSize = reader.ReadInt32();
|
||||||
|
|
||||||
var nodeSize = 24;
|
var nodeSize = 24;
|
||||||
if (header.m_Version > 17)
|
if (header.m_Version >= 19)
|
||||||
{
|
{
|
||||||
nodeSize = 32;
|
nodeSize = 32;
|
||||||
}
|
}
|
||||||
|
@ -303,20 +312,17 @@ namespace AssetStudio
|
||||||
typeTreeNode.m_Index = reader.ReadInt32();
|
typeTreeNode.m_Index = reader.ReadInt32();
|
||||||
typeTreeNode.m_MetaFlag = reader.ReadInt32();
|
typeTreeNode.m_MetaFlag = reader.ReadInt32();
|
||||||
|
|
||||||
if (header.m_Version > 17)
|
typeTreeNode.m_Type = ReadString(stringBufferReader, typeTreeNode.m_TypeStrOffset);
|
||||||
|
typeTreeNode.m_Name = ReadString(stringBufferReader, typeTreeNode.m_NameStrOffset);
|
||||||
|
|
||||||
|
if (header.m_Version >= 19)
|
||||||
{
|
{
|
||||||
reader.Position += 8;
|
reader.Position += 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
typeTreeNode.m_Type = ReadString(stringBufferReader, typeTreeNode.m_TypeStrOffset);
|
|
||||||
typeTreeNode.m_Name = ReadString(stringBufferReader, typeTreeNode.m_NameStrOffset);
|
|
||||||
}
|
}
|
||||||
reader.Position += stringBufferSize;
|
reader.Position += stringBufferSize;
|
||||||
}
|
}
|
||||||
if (header.m_Version >= 21)
|
|
||||||
{
|
|
||||||
reader.Position += 4;
|
|
||||||
}
|
|
||||||
string ReadString(BinaryReader stringBufferReader, uint value)
|
string ReadString(BinaryReader stringBufferReader, uint value)
|
||||||
{
|
{
|
||||||
var isOffset = (value & 0x80000000) == 0;
|
var isOffset = (value & 0x80000000) == 0;
|
||||||
|
|
Loading…
Reference in New Issue