- [Core] fix issue with parsing MeshRenderer/SkinnedMeshRenderer [BH3]
This commit is contained in:
@@ -41,7 +41,11 @@ namespace AssetStudio
|
|||||||
{
|
{
|
||||||
if (reader.Game.Type.IsGI())
|
if (reader.Game.Type.IsGI())
|
||||||
{
|
{
|
||||||
CheckHeader(reader);
|
CheckHeader(reader, 0x1A);
|
||||||
|
}
|
||||||
|
if (reader.Game.Type.IsBH3())
|
||||||
|
{
|
||||||
|
CheckHeader(reader, 0x12);
|
||||||
}
|
}
|
||||||
var m_Enabled = reader.ReadBoolean();
|
var m_Enabled = reader.ReadBoolean();
|
||||||
var m_CastShadows = reader.ReadByte();
|
var m_CastShadows = reader.ReadByte();
|
||||||
@@ -53,6 +57,7 @@ namespace AssetStudio
|
|||||||
if (reader.Game.Type.IsBH3Group())
|
if (reader.Game.Type.IsBH3Group())
|
||||||
{
|
{
|
||||||
var m_AllowHalfResolution = reader.ReadByte();
|
var m_AllowHalfResolution = reader.ReadByte();
|
||||||
|
int m_EnableGpuQuery = isNewHeader ? reader.ReadByte() : 0;
|
||||||
}
|
}
|
||||||
if (reader.Game.Type.IsGIGroup())
|
if (reader.Game.Type.IsGIGroup())
|
||||||
{
|
{
|
||||||
@@ -120,7 +125,7 @@ namespace AssetStudio
|
|||||||
reader.AlignStream();
|
reader.AlignStream();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version[0] >= 2018) //2018 and up
|
if (version[0] >= 2018 || (reader.Game.Type.IsBH3() && isNewHeader)) //2018 and up
|
||||||
{
|
{
|
||||||
var m_RenderingLayerMask = reader.ReadUInt32();
|
var m_RenderingLayerMask = reader.ReadUInt32();
|
||||||
}
|
}
|
||||||
@@ -228,15 +233,15 @@ namespace AssetStudio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckHeader(ObjectReader reader)
|
private void CheckHeader(ObjectReader reader, int offset)
|
||||||
{
|
{
|
||||||
short value = 0;
|
short value = 0;
|
||||||
var pos = reader.Position;
|
var pos = reader.Position;
|
||||||
while (value != -1 && reader.Position <= pos + 0x1A)
|
while (value != -1 && reader.Position <= pos + offset)
|
||||||
{
|
{
|
||||||
value = reader.ReadInt16();
|
value = reader.ReadInt16();
|
||||||
}
|
}
|
||||||
isNewHeader = (reader.Position - pos) == 0x1A;
|
isNewHeader = (reader.Position - pos) == offset;
|
||||||
reader.Position = pos;
|
reader.Position = pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user