tweak(drawable): update Unknown values

This commit is contained in:
ook3d 2023-12-14 16:39:37 -05:00
parent 4d49215671
commit 3a04afa9e3

View File

@ -813,22 +813,22 @@ namespace CodeWalker.GameFiles
public ulong BoneTagsPointer { get; set; } public ulong BoneTagsPointer { get; set; }
public ushort BoneTagsCapacity { get; set; } public ushort BoneTagsCapacity { get; set; }
public ushort BoneTagsCount { get; set; } public ushort BoneTagsCount { get; set; }
public FlagsUint Unknown_1Ch { get; set; } public FlagsUint BoneIdTable { get; set; }
public ulong BonesPointer { get; set; } public ulong BonesPointer { get; set; }
public ulong TransformationsInvertedPointer { get; set; } public ulong TransformationsInvertedPointer { get; set; }
public ulong TransformationsPointer { get; set; } public ulong TransformationsPointer { get; set; }
public ulong ParentIndicesPointer { get; set; } public ulong ParentIndicesPointer { get; set; }
public ulong ChildIndicesPointer { get; set; } public ulong ChildIndicesPointer { get; set; }
public ulong Unknown_48h; // 0x0000000000000000 public ulong Properties; // 0x0000000000000000
public MetaHash Unknown_50h { get; set; } public MetaHash Signature { get; set; }
public MetaHash Unknown_54h { get; set; } public MetaHash SignatureNonChiral { get; set; }
public MetaHash Unknown_58h { get; set; } public MetaHash SignatureComprehensive { get; set; }
public ushort Unknown_5Ch { get; set; } = 1; // 0x0001 public ushort RefCount { get; set; } = 1; // 0x0001
public ushort BonesCount { get; set; } public ushort NumBones { get; set; }
public ushort ChildIndicesCount { get; set; } public ushort NumChildCount { get; set; }
public ushort Unknown_62h; // 0x0000 public ushort Unknown_62h; // 0x0000 Padding
public uint Unknown_64h; // 0x00000000 public uint Unknown_64h; // 0x00000000 Padding
public ulong Unknown_68h; // 0x0000000000000000 public ulong Unknown_68h; // 0x0000000000000000 Padding
// reference data // reference data
public ResourcePointerArray64<SkeletonBoneTag> BoneTags { get; set; } public ResourcePointerArray64<SkeletonBoneTag> BoneTags { get; set; }
@ -861,30 +861,30 @@ namespace CodeWalker.GameFiles
this.BoneTagsPointer = reader.ReadUInt64(); this.BoneTagsPointer = reader.ReadUInt64();
this.BoneTagsCapacity = reader.ReadUInt16(); this.BoneTagsCapacity = reader.ReadUInt16();
this.BoneTagsCount = reader.ReadUInt16(); this.BoneTagsCount = reader.ReadUInt16();
this.Unknown_1Ch = reader.ReadUInt32(); this.BoneIdTable = reader.ReadUInt32();
this.BonesPointer = reader.ReadUInt64(); this.BonesPointer = reader.ReadUInt64();
this.TransformationsInvertedPointer = reader.ReadUInt64(); this.TransformationsInvertedPointer = reader.ReadUInt64();
this.TransformationsPointer = reader.ReadUInt64(); this.TransformationsPointer = reader.ReadUInt64();
this.ParentIndicesPointer = reader.ReadUInt64(); this.ParentIndicesPointer = reader.ReadUInt64();
this.ChildIndicesPointer = reader.ReadUInt64(); this.ChildIndicesPointer = reader.ReadUInt64();
this.Unknown_48h = reader.ReadUInt64(); this.Properties = reader.ReadUInt64();
this.Unknown_50h = new MetaHash(reader.ReadUInt32()); this.Signature = new MetaHash(reader.ReadUInt32());
this.Unknown_54h = new MetaHash(reader.ReadUInt32()); this.SignatureNonChiral = new MetaHash(reader.ReadUInt32());
this.Unknown_58h = new MetaHash(reader.ReadUInt32()); this.SignatureComprehensive = new MetaHash(reader.ReadUInt32());
this.Unknown_5Ch = reader.ReadUInt16(); this.RefCount = reader.ReadUInt16();
this.BonesCount = reader.ReadUInt16(); this.NumBones = reader.ReadUInt16();
this.ChildIndicesCount = reader.ReadUInt16(); this.NumChildCount = reader.ReadUInt16();
this.Unknown_62h = reader.ReadUInt16(); this.Unknown_62h = reader.ReadUInt16();
this.Unknown_64h = reader.ReadUInt32(); this.Unknown_64h = reader.ReadUInt32();
this.Unknown_68h = reader.ReadUInt64(); this.Unknown_68h = reader.ReadUInt64();
// read reference data // read reference data
this.BoneTags = reader.ReadBlockAt<ResourcePointerArray64<SkeletonBoneTag>>(this.BoneTagsPointer, this.BoneTagsCapacity); this.BoneTags = reader.ReadBlockAt<ResourcePointerArray64<SkeletonBoneTag>>(this.BoneTagsPointer, this.BoneTagsCapacity);
this.Bones = reader.ReadBlockAt<SkeletonBonesBlock>((this.BonesPointer != 0) ? (BonesPointer - 16) : 0, (uint)this.BonesCount); this.Bones = reader.ReadBlockAt<SkeletonBonesBlock>((this.BonesPointer != 0) ? (BonesPointer - 16) : 0, (uint)this.NumBones);
this.TransformationsInverted = reader.ReadStructsAt<Matrix>(this.TransformationsInvertedPointer, this.BonesCount); this.TransformationsInverted = reader.ReadStructsAt<Matrix>(this.TransformationsInvertedPointer, this.NumBones);
this.Transformations = reader.ReadStructsAt<Matrix>(this.TransformationsPointer, this.BonesCount); this.Transformations = reader.ReadStructsAt<Matrix>(this.TransformationsPointer, this.NumBones);
this.ParentIndices = reader.ReadShortsAt(this.ParentIndicesPointer, this.BonesCount); this.ParentIndices = reader.ReadShortsAt(this.ParentIndicesPointer, this.NumBones);
this.ChildIndices = reader.ReadShortsAt(this.ChildIndicesPointer, this.ChildIndicesCount); this.ChildIndices = reader.ReadShortsAt(this.ChildIndicesPointer, this.NumChildCount);
AssignBoneParents(); AssignBoneParents();
@ -927,9 +927,9 @@ namespace CodeWalker.GameFiles
this.TransformationsPointer = (ulong)(this.TransformationsBlock != null ? this.TransformationsBlock.FilePosition : 0); this.TransformationsPointer = (ulong)(this.TransformationsBlock != null ? this.TransformationsBlock.FilePosition : 0);
this.ParentIndicesPointer = (ulong)(this.ParentIndicesBlock != null ? this.ParentIndicesBlock.FilePosition : 0); this.ParentIndicesPointer = (ulong)(this.ParentIndicesBlock != null ? this.ParentIndicesBlock.FilePosition : 0);
this.ChildIndicesPointer = (ulong)(this.ChildIndicesBlock != null ? this.ChildIndicesBlock.FilePosition : 0); this.ChildIndicesPointer = (ulong)(this.ChildIndicesBlock != null ? this.ChildIndicesBlock.FilePosition : 0);
this.BonesCount = (ushort)(this.Bones?.Items != null ? this.Bones.Items.Length : 0); this.NumBones = (ushort)(this.Bones?.Items != null ? this.Bones.Items.Length : 0);
this.ChildIndicesCount = (ushort)(this.ChildIndicesBlock != null ? this.ChildIndicesBlock.ItemCount : 0); this.NumChildCount = (ushort)(this.ChildIndicesBlock != null ? this.ChildIndicesBlock.ItemCount : 0);
this.BoneTagsCount = Math.Min(BonesCount, BoneTagsCapacity); this.BoneTagsCount = Math.Min(NumBones, BoneTagsCapacity);
// write structure data // write structure data
@ -939,29 +939,29 @@ namespace CodeWalker.GameFiles
writer.Write(this.BoneTagsPointer); writer.Write(this.BoneTagsPointer);
writer.Write(this.BoneTagsCapacity); writer.Write(this.BoneTagsCapacity);
writer.Write(this.BoneTagsCount); writer.Write(this.BoneTagsCount);
writer.Write(this.Unknown_1Ch); writer.Write(this.BoneIdTable);
writer.Write(this.BonesPointer); writer.Write(this.BonesPointer);
writer.Write(this.TransformationsInvertedPointer); writer.Write(this.TransformationsInvertedPointer);
writer.Write(this.TransformationsPointer); writer.Write(this.TransformationsPointer);
writer.Write(this.ParentIndicesPointer); writer.Write(this.ParentIndicesPointer);
writer.Write(this.ChildIndicesPointer); writer.Write(this.ChildIndicesPointer);
writer.Write(this.Unknown_48h); writer.Write(this.Properties);
writer.Write(this.Unknown_50h); writer.Write(this.Signature);
writer.Write(this.Unknown_54h); writer.Write(this.SignatureNonChiral);
writer.Write(this.Unknown_58h); writer.Write(this.SignatureComprehensive);
writer.Write(this.Unknown_5Ch); writer.Write(this.RefCount);
writer.Write(this.BonesCount); writer.Write(this.NumBones);
writer.Write(this.ChildIndicesCount); writer.Write(this.NumChildCount);
writer.Write(this.Unknown_62h); writer.Write(this.Unknown_62h);
writer.Write(this.Unknown_64h); writer.Write(this.Unknown_64h);
writer.Write(this.Unknown_68h); writer.Write(this.Unknown_68h);
} }
public void WriteXml(StringBuilder sb, int indent) public void WriteXml(StringBuilder sb, int indent)
{ {
YdrXml.ValueTag(sb, indent, "Unknown1C", Unknown_1Ch.Value.ToString()); YdrXml.ValueTag(sb, indent, "BoneIdTable", BoneIdTable.Value.ToString());
YdrXml.ValueTag(sb, indent, "Unknown50", Unknown_50h.Hash.ToString()); YdrXml.ValueTag(sb, indent, "Signature", Signature.Hash.ToString());
YdrXml.ValueTag(sb, indent, "Unknown54", Unknown_54h.Hash.ToString()); YdrXml.ValueTag(sb, indent, "SignatureNonChiral", SignatureNonChiral.Hash.ToString());
YdrXml.ValueTag(sb, indent, "Unknown58", Unknown_58h.Hash.ToString()); YdrXml.ValueTag(sb, indent, "SignatureComprehensive", SignatureComprehensive.Hash.ToString());
if (Bones?.Items != null) if (Bones?.Items != null)
{ {
@ -971,10 +971,10 @@ namespace CodeWalker.GameFiles
} }
public void ReadXml(XmlNode node) public void ReadXml(XmlNode node)
{ {
Unknown_1Ch = Xml.GetChildUIntAttribute(node, "Unknown1C", "value"); BoneIdTable = Xml.GetChildUIntAttribute(node, "BoneIdTable", "value");
Unknown_50h = Xml.GetChildUIntAttribute(node, "Unknown50", "value"); Signature = Xml.GetChildUIntAttribute(node, "Signature", "value");
Unknown_54h = Xml.GetChildUIntAttribute(node, "Unknown54", "value"); SignatureNonChiral = Xml.GetChildUIntAttribute(node, "SignatureNonChiral", "value");
Unknown_58h = Xml.GetChildUIntAttribute(node, "Unknown58", "value"); SignatureComprehensive = Xml.GetChildUIntAttribute(node, "SignatureComprehensive", "value");
var bones = XmlMeta.ReadItemArray<Bone>(node, "Bones"); var bones = XmlMeta.ReadItemArray<Bone>(node, "Bones");
if (bones != null) if (bones != null)
@ -1422,12 +1422,12 @@ namespace CodeWalker.GameFiles
skel.BoneTagsCapacity = BoneTagsCapacity; skel.BoneTagsCapacity = BoneTagsCapacity;
skel.BoneTagsCount = BoneTagsCount; skel.BoneTagsCount = BoneTagsCount;
skel.Unknown_1Ch = Unknown_1Ch; skel.BoneIdTable = BoneIdTable;
skel.Unknown_50h = Unknown_50h; skel.Signature = Signature;
skel.Unknown_54h = Unknown_54h; skel.SignatureNonChiral = SignatureNonChiral;
skel.Unknown_58h = Unknown_58h; skel.SignatureComprehensive = SignatureComprehensive;
skel.BonesCount = BonesCount; skel.NumBones = NumBones;
skel.ChildIndicesCount = ChildIndicesCount; skel.NumChildCount = NumChildCount;
if (BoneTags != null) if (BoneTags != null)
{ {
@ -1473,7 +1473,7 @@ namespace CodeWalker.GameFiles
nb.Flags = ob.Flags; nb.Flags = ob.Flags;
nb.Index = ob.Index; nb.Index = ob.Index;
nb.Tag = ob.Tag; nb.Tag = ob.Tag;
nb.Index2 = ob.Index2; nb.MirrorIndex = ob.MirrorIndex;
nb.Name = ob.Name; nb.Name = ob.Name;
nb.AnimRotation = ob.AnimRotation; nb.AnimRotation = ob.AnimRotation;
nb.AnimTranslation = ob.AnimTranslation; nb.AnimTranslation = ob.AnimTranslation;
@ -2030,18 +2030,18 @@ namespace CodeWalker.GameFiles
// structure data // structure data
public Quaternion Rotation { get; set; } public Quaternion Rotation { get; set; }
public Vector3 Translation { get; set; } public Vector3 Translation { get; set; }
public uint Unknown_1Ch; // 0x00000000 RHW? public uint Unknown_1Ch; // 0x00000000 padding
public Vector3 Scale { get; set; } public Vector3 Scale { get; set; }
public float Unknown_2Ch { get; set; } = 1.0f; // 1.0 RHW? public float Unknown_2Ch { get; set; } = 1.0f; // 1.0 padding
public short NextSiblingIndex { get; set; } //limb end index? IK chain? public short NextSiblingIndex { get; set; }
public short ParentIndex { get; set; } public short ParentIndex { get; set; }
public uint Unknown_34h; // 0x00000000 public uint Unknown_34h; // 0x00000000 padding
public ulong NamePointer { get; set; } public ulong NamePointer { get; set; }
public EBoneFlags Flags { get; set; } public EBoneFlags Flags { get; set; } // Dofs
public short Index { get; set; } public short Index { get; set; }
public ushort Tag { get; set; } public ushort Tag { get; set; } // Bone IDs
public short Index2 { get; set; }//always same as Index public short MirrorIndex { get; set; }//always same as Index
public ulong Unknown_48h; // 0x0000000000000000 public ulong Unknown_48h; // 0x0000000000000000 padding
// reference data // reference data
public string Name { get; set; } public string Name { get; set; }
@ -2076,7 +2076,7 @@ namespace CodeWalker.GameFiles
this.Flags = (EBoneFlags)reader.ReadUInt16(); this.Flags = (EBoneFlags)reader.ReadUInt16();
this.Index = reader.ReadInt16(); this.Index = reader.ReadInt16();
this.Tag = reader.ReadUInt16(); this.Tag = reader.ReadUInt16();
this.Index2 = reader.ReadInt16(); this.MirrorIndex = reader.ReadInt16();
this.Unknown_48h = reader.ReadUInt64(); this.Unknown_48h = reader.ReadUInt64();
// read reference data // read reference data
@ -2118,7 +2118,7 @@ namespace CodeWalker.GameFiles
writer.Write((ushort)this.Flags); writer.Write((ushort)this.Flags);
writer.Write(this.Index); writer.Write(this.Index);
writer.Write(this.Tag); writer.Write(this.Tag);
writer.Write(this.Index2); writer.Write(this.MirrorIndex);
writer.Write(this.Unknown_48h); writer.Write(this.Unknown_48h);
} }
public void WriteXml(StringBuilder sb, int indent) public void WriteXml(StringBuilder sb, int indent)
@ -2139,7 +2139,7 @@ namespace CodeWalker.GameFiles
Name = Xml.GetChildInnerText(node, "Name"); Name = Xml.GetChildInnerText(node, "Name");
Tag = (ushort)Xml.GetChildUIntAttribute(node, "Tag", "value"); Tag = (ushort)Xml.GetChildUIntAttribute(node, "Tag", "value");
Index = (short)Xml.GetChildIntAttribute(node, "Index", "value"); Index = (short)Xml.GetChildIntAttribute(node, "Index", "value");
Index2 = Index; MirrorIndex = Index;
ParentIndex = (short)Xml.GetChildIntAttribute(node, "ParentIndex", "value"); ParentIndex = (short)Xml.GetChildIntAttribute(node, "ParentIndex", "value");
NextSiblingIndex = (short)Xml.GetChildIntAttribute(node, "SiblingIndex", "value"); NextSiblingIndex = (short)Xml.GetChildIntAttribute(node, "SiblingIndex", "value");
Flags = Xml.GetChildEnumInnerText<EBoneFlags>(node, "Flags"); Flags = Xml.GetChildEnumInnerText<EBoneFlags>(node, "Flags");