More MRF corrections

This commit is contained in:
Disquse 2021-07-16 20:24:01 +03:00
parent 8d399945cd
commit 17b89cf4ee

View File

@ -76,24 +76,24 @@ namespace CodeWalker.GameFiles
public abstract class MrfNodeBlendAddSubtractBase : MrfNodeInfoBase public abstract class MrfNodeBlendAddSubtractBase : MrfNodeInfoBase
{ {
public MrfHeaderNameFlag Header { get; set; } public MrfHeaderNameFlag Header { get; set; }
public uint Unk1 { get; set; } public int Unk1 { get; set; }
public uint Unk2 { get; set; } public int Unk2 { get; set; }
public uint Unk3 { get; set; } public uint Unk3 { get; set; }
public uint Unk4 { get; set; } public float Unk4 { get; set; }
public MetaHash Unk5 { get; set; } public MetaHash Unk5 { get; set; }
public uint Unk6 { get; set; } public uint Unk6 { get; set; }
public override void Parse(DataReader r) public override void Parse(DataReader r)
{ {
Header = new MrfHeaderNameFlag(r); Header = new MrfHeaderNameFlag(r);
Unk1 = r.ReadUInt32(); Unk1 = r.ReadInt32();
Unk2 = r.ReadUInt32(); Unk2 = r.ReadInt32();
if ((Header.Flags & 0x180000) == 0x80000) if ((Header.Flags & 0x180000) == 0x80000)
Unk3 = r.ReadUInt32(); Unk3 = r.ReadUInt32();
if ((Header.Flags & 3) != 0) if ((Header.Flags & 3) != 0)
Unk4 = r.ReadUInt32(); Unk4 = r.ReadSingle();
var unkTypeFlag = (Header.Flags >> 2) & 3; var unkTypeFlag = (Header.Flags >> 2) & 3;
@ -141,7 +141,7 @@ namespace CodeWalker.GameFiles
public MrfHeaderNameFlag Header { get; set; } public MrfHeaderNameFlag Header { get; set; }
public uint Unk1 { get; set; } public uint Unk1 { get; set; }
public MetaHash Unk2 { get; set; } public MetaHash Unk2 { get; set; }
public uint Unk3 { get; set; } public MetaHash Unk3 { get; set; }
public override void Parse(DataReader r) public override void Parse(DataReader r)
{ {
@ -156,10 +156,10 @@ namespace CodeWalker.GameFiles
if (unkTypeFlag != 1) if (unkTypeFlag != 1)
return; return;
Unk2 = new MetaHash(r.ReadUInt32()); Unk2 = new MetaHash(r.ReadUInt32()); // Filter Frame dict hash
} }
Unk3 = r.ReadUInt32(); Unk3 = new MetaHash(r.ReadUInt32()); // Filter Frame name hash
} }
public override long CalculateSize(DataReader r) public override long CalculateSize(DataReader r)
@ -393,8 +393,8 @@ namespace CodeWalker.GameFiles
public struct MrfStructStateMainSection public struct MrfStructStateMainSection
{ {
public uint Unk1 { get; set; } public uint Unk1 { get; set; }
public uint Unk2 { get; set; } public int Unk2 { get; set; }
public uint Unk3 { get; set; } public float Unk3 { get; set; }
public uint Unk4 { get; set; } public uint Unk4 { get; set; }
public uint Unk5 { get; set; } public uint Unk5 { get; set; }
public uint Unk6 { get; set; } public uint Unk6 { get; set; }
@ -405,8 +405,8 @@ namespace CodeWalker.GameFiles
public MrfStructStateMainSection(DataReader r) public MrfStructStateMainSection(DataReader r)
{ {
Unk1 = r.ReadUInt32(); Unk1 = r.ReadUInt32();
Unk2 = r.ReadUInt32(); Unk2 = r.ReadInt32();
Unk3 = r.ReadUInt32(); Unk3 = r.ReadSingle();
Unk4 = r.ReadUInt32(); Unk4 = r.ReadUInt32();
Unk5 = r.ReadUInt32(); Unk5 = r.ReadUInt32();
Unk6 = r.ReadUInt32(); Unk6 = r.ReadUInt32();
@ -568,9 +568,9 @@ namespace CodeWalker.GameFiles
[TC(typeof(EXP))] [TC(typeof(EXP))]
public struct MrfStructStateInfoSignalDataUnk3 public struct MrfStructStateInfoSignalDataUnk3
{ {
public uint UnkValue; public uint UnkValue { get; }
public uint UnkDefault; public uint UnkDefault { get; }
public ulong UnkRange; public ulong UnkRange { get; }
public MrfStructStateInfoSignalDataUnk3(DataReader r) public MrfStructStateInfoSignalDataUnk3(DataReader r)
{ {
@ -580,6 +580,19 @@ namespace CodeWalker.GameFiles
} }
} }
[TC(typeof(EXP))]
public struct MrfStructStateMachineEntry
{
public MetaHash Value { get; }
public uint Unk { get; }
public MrfStructStateMachineEntry(DataReader r)
{
Value = new MetaHash(r.ReadUInt32());
Unk = r.ReadUInt32();
}
}
[TC(typeof(EXP))] [TC(typeof(EXP))]
public struct MrfStructStateInfoSignalData public struct MrfStructStateInfoSignalData
{ {
@ -741,21 +754,16 @@ namespace CodeWalker.GameFiles
public class MrfNodeStateMachineClassInfo : MrfNodeInfoBase public class MrfNodeStateMachineClassInfo : MrfNodeInfoBase
{ {
public MrfHeaderStateMachine Header { get; set; } public MrfHeaderStateMachine Header { get; set; }
public int[][] Items { get; set; } public MrfStructStateMachineEntry[] Items { get; set; }
public MrfStructStateSection Header_Unk7_Data { get; set; } public MrfStructStateSection Header_Unk7_Data { get; set; }
public override void Parse(DataReader r) public override void Parse(DataReader r)
{ {
Header = new MrfHeaderStateMachine(r); Header = new MrfHeaderStateMachine(r);
Items = new int[Header.Unk6][]; Items = new MrfStructStateMachineEntry[Header.Unk6];
for (int i = 0; i < Header.Unk6; i++) for (int i = 0; i < Header.Unk6; i++)
{ Items[i] = new MrfStructStateMachineEntry(r);
var unk1 = r.ReadInt32();
var unk2 = r.ReadInt32();
Items[i] = new int[] { unk1, unk2 };
}
if (Header.Unk7 != 0) if (Header.Unk7 != 0)
{ {
@ -821,22 +829,17 @@ namespace CodeWalker.GameFiles
{ {
public MrfHeaderStateMachine Header { get; set; } public MrfHeaderStateMachine Header { get; set; }
public uint Unk { get; set; } public uint Unk { get; set; }
public int[][] Items { get; set; } public MrfStructStateMachineEntry[] Items { get; set; }
public override void Parse(DataReader r) public override void Parse(DataReader r)
{ {
Header = new MrfHeaderStateMachine(r); Header = new MrfHeaderStateMachine(r);
Items = new int[Header.Unk6][]; Items = new MrfStructStateMachineEntry[Header.Unk6];
Unk = r.ReadUInt32(); Unk = r.ReadUInt32();
for (int i = 0; i < Header.Unk6; i++) for (int i = 0; i < Header.Unk6; i++)
{ Items[i] = new MrfStructStateMachineEntry(r);
var unk1 = r.ReadInt32();
var unk2 = r.ReadInt32();
Items[i] = new int[] { unk1, unk2 };
}
} }
public override long CalculateSize(DataReader r) public override long CalculateSize(DataReader r)
@ -1052,7 +1055,7 @@ namespace CodeWalker.GameFiles
public MetaHash DictName { get; set; } public MetaHash DictName { get; set; }
public MetaHash ClipName { get; set; } public MetaHash ClipName { get; set; }
public float Unk5 { get; set; } public float Unk5 { get; set; }
public uint Unk6 { get; set; } public float Unk6 { get; set; }
public uint Unk7 { get; set; } public uint Unk7 { get; set; }
public uint Unk8 { get; set; } public uint Unk8 { get; set; }
@ -1081,7 +1084,7 @@ namespace CodeWalker.GameFiles
Unk5 = r.ReadSingle(); Unk5 = r.ReadSingle();
if (((Header.Flags >> 4) & 3) != 0) if (((Header.Flags >> 4) & 3) != 0)
Unk6 = r.ReadUInt32(); Unk6 = r.ReadSingle();
if (((Header.Flags >> 6) & 3) != 0) if (((Header.Flags >> 6) & 3) != 0)
Unk7 = r.ReadUInt32(); Unk7 = r.ReadUInt32();
@ -1278,8 +1281,8 @@ namespace CodeWalker.GameFiles
public MrfHeaderNameFlag Header { get; set; } public MrfHeaderNameFlag Header { get; set; }
public uint Unk1 { get; set; } public uint Unk1 { get; set; }
public uint Unk2 { get; set; } public uint Unk2 { get; set; }
public MetaHash Unk3 { get; set; } public MetaHash ExpressionDict { get; set; }
public uint Unk4 { get; set; } public MetaHash ExpressionName { get; set; }
public uint Unk5 { get; set; } public uint Unk5 { get; set; }
public float Unk6 { get; set; } public float Unk6 { get; set; }
public uint[][] Unk7 { get; set; } public uint[][] Unk7 { get; set; }
@ -1292,8 +1295,8 @@ namespace CodeWalker.GameFiles
switch (Header.Flags & 3) switch (Header.Flags & 3)
{ {
case 1: case 1:
Unk3 = new MetaHash(r.ReadUInt32()); ExpressionDict = new MetaHash(r.ReadUInt32());
Unk4 = r.ReadUInt32(); ExpressionName = new MetaHash(r.ReadUInt32());
break; break;
case 2: case 2:
Unk5 = r.ReadUInt32(); Unk5 = r.ReadUInt32();
@ -1344,7 +1347,7 @@ namespace CodeWalker.GameFiles
result = 24; result = 24;
break; break;
case 2: case 2:
result = 2; result = 20;
break; break;
} }