From 4d4921567198130e377d562d3a7df37e6e858c9d Mon Sep 17 00:00:00 2001 From: ook3d <47336113+ook3D@users.noreply.github.com> Date: Thu, 14 Dec 2023 16:39:16 -0500 Subject: [PATCH] tweak(frag): update Unknown values --- CodeWalker.Core/GameFiles/Resources/Frag.cs | 218 ++++++++++---------- 1 file changed, 110 insertions(+), 108 deletions(-) diff --git a/CodeWalker.Core/GameFiles/Resources/Frag.cs b/CodeWalker.Core/GameFiles/Resources/Frag.cs index 7091840..5f0c852 100644 --- a/CodeWalker.Core/GameFiles/Resources/Frag.cs +++ b/CodeWalker.Core/GameFiles/Resources/Frag.cs @@ -2111,16 +2111,16 @@ namespace CodeWalker.GameFiles public uint Unknown_04h = 1; // 0x00000001 public ulong Unknown_08h; // 0x0000000000000000 public uint Unknown_10h; // 0x00000000 - public float Unknown_14h { get; set; } - public float Unknown_18h { get; set; } - public float Unknown_1Ch { get; set; } + public float SmallestAngInertia { get; set; } + public float LargestAngInertia { get; set; } + public float MinMoveForce { get; set; } public ulong ArticulatedBodyTypePointer { get; set; } public ulong ChildrenUnkFloatsPointer { get; set; } public Vector3 PositionOffset { get; set; } public uint Unknown_3Ch { get; set; } = 0x7fc00001; // 0x7f800001, 0x7fc00001 - public Vector3 Unknown_40h { get; set; } + public Vector3 OriginalRootCGOffset { get; set; } public uint Unknown_4Ch { get; set; } = 0x7fc00001; // 0x7f800001, 0x7fc00001 - public Vector3 Unknown_50h { get; set; } + public Vector3 UnbrokenCGOffset { get; set; } public uint Unknown_5Ch = 0x7f800001; // 0x7f800001 public Vector3 DampingLinearC { get; set; } public uint Unknown_6Ch = 0x7f800001; // 0x7f800001 @@ -2186,16 +2186,16 @@ namespace CodeWalker.GameFiles this.Unknown_04h = reader.ReadUInt32(); this.Unknown_08h = reader.ReadUInt64(); this.Unknown_10h = reader.ReadUInt32(); - this.Unknown_14h = reader.ReadSingle(); - this.Unknown_18h = reader.ReadSingle(); - this.Unknown_1Ch = reader.ReadSingle(); + this.SmallestAngInertia = reader.ReadSingle(); + this.LargestAngInertia = reader.ReadSingle(); + this.MinMoveForce = reader.ReadSingle(); this.ArticulatedBodyTypePointer = reader.ReadUInt64(); this.ChildrenUnkFloatsPointer = reader.ReadUInt64(); this.PositionOffset = reader.ReadVector3(); this.Unknown_3Ch = reader.ReadUInt32(); - this.Unknown_40h = reader.ReadVector3(); + this.OriginalRootCGOffset = reader.ReadVector3(); this.Unknown_4Ch = reader.ReadUInt32(); - this.Unknown_50h = reader.ReadVector3(); + this.UnbrokenCGOffset = reader.ReadVector3(); this.Unknown_5Ch = reader.ReadUInt32(); this.DampingLinearC = reader.ReadVector3(); this.Unknown_6Ch = reader.ReadUInt32(); @@ -2393,16 +2393,16 @@ namespace CodeWalker.GameFiles writer.Write(this.Unknown_04h); writer.Write(this.Unknown_08h); writer.Write(this.Unknown_10h); - writer.Write(this.Unknown_14h); - writer.Write(this.Unknown_18h); - writer.Write(this.Unknown_1Ch); + writer.Write(this.SmallestAngInertia); + writer.Write(this.LargestAngInertia); + writer.Write(this.MinMoveForce); writer.Write(this.ArticulatedBodyTypePointer); writer.Write(this.ChildrenUnkFloatsPointer); writer.Write(this.PositionOffset); writer.Write(this.Unknown_3Ch); - writer.Write(this.Unknown_40h); + writer.Write(this.OriginalRootCGOffset); writer.Write(this.Unknown_4Ch); - writer.Write(this.Unknown_50h); + writer.Write(this.UnbrokenCGOffset); writer.Write(this.Unknown_5Ch); writer.Write(this.DampingLinearC); writer.Write(this.Unknown_6Ch); @@ -2440,12 +2440,12 @@ namespace CodeWalker.GameFiles } public void WriteXml(StringBuilder sb, int indent, string ddsfolder) { - YftXml.ValueTag(sb, indent, "Unknown14", FloatUtil.ToString(Unknown_14h)); - YftXml.ValueTag(sb, indent, "Unknown18", FloatUtil.ToString(Unknown_18h)); - YftXml.ValueTag(sb, indent, "Unknown1C", FloatUtil.ToString(Unknown_1Ch)); + YftXml.ValueTag(sb, indent, "SmallestAngInertia", FloatUtil.ToString(SmallestAngInertia)); + YftXml.ValueTag(sb, indent, "LargestAngInertia", FloatUtil.ToString(LargestAngInertia)); + YftXml.ValueTag(sb, indent, "MinMoveForce", FloatUtil.ToString(MinMoveForce)); YftXml.SelfClosingTag(sb, indent, "PositionOffset " + FloatUtil.GetVector3XmlString(PositionOffset)); - YftXml.SelfClosingTag(sb, indent, "Unknown40 " + FloatUtil.GetVector3XmlString(Unknown_40h)); - YftXml.SelfClosingTag(sb, indent, "Unknown50 " + FloatUtil.GetVector3XmlString(Unknown_50h)); + YftXml.SelfClosingTag(sb, indent, "OriginalRootCGOffset " + FloatUtil.GetVector3XmlString(OriginalRootCGOffset)); + YftXml.SelfClosingTag(sb, indent, "UnbrokenCGOffset " + FloatUtil.GetVector3XmlString(UnbrokenCGOffset)); YftXml.SelfClosingTag(sb, indent, "DampingLinearC " + FloatUtil.GetVector3XmlString(DampingLinearC)); YftXml.SelfClosingTag(sb, indent, "DampingLinearV " + FloatUtil.GetVector3XmlString(DampingLinearV)); YftXml.SelfClosingTag(sb, indent, "DampingLinearV2 " + FloatUtil.GetVector3XmlString(DampingLinearV2)); @@ -2515,12 +2515,12 @@ namespace CodeWalker.GameFiles } public void ReadXml(XmlNode node, string ddsfolder) { - Unknown_14h = Xml.GetChildFloatAttribute(node, "Unknown14", "value"); - Unknown_18h = Xml.GetChildFloatAttribute(node, "Unknown18", "value"); - Unknown_1Ch = Xml.GetChildFloatAttribute(node, "Unknown1C", "value"); + SmallestAngInertia = Xml.GetChildFloatAttribute(node, "SmallestAngInertia", "value"); + LargestAngInertia = Xml.GetChildFloatAttribute(node, "LargestAngInertia", "value"); + MinMoveForce = Xml.GetChildFloatAttribute(node, "MinMoveForce", "value"); PositionOffset = Xml.GetChildVector3Attributes(node, "PositionOffset"); - Unknown_40h = Xml.GetChildVector3Attributes(node, "Unknown40"); - Unknown_50h = Xml.GetChildVector3Attributes(node, "Unknown50"); + OriginalRootCGOffset = Xml.GetChildVector3Attributes(node, "OriginalRootCGOffset"); + UnbrokenCGOffset = Xml.GetChildVector3Attributes(node, "UnbrokenCGOffset"); DampingLinearC = Xml.GetChildVector3Attributes(node, "DampingLinearC"); DampingLinearV = Xml.GetChildVector3Attributes(node, "DampingLinearV"); DampingLinearV2 = Xml.GetChildVector3Attributes(node, "DampingLinearV2"); @@ -2933,26 +2933,26 @@ namespace CodeWalker.GameFiles // structure data public uint VFT { get; set; } - public uint Unknown_04h = 1; // 0x00000001 + public uint DefaultStiffness = 1; // 0x00000001 public ulong Unknown_08h; // 0x0000000000000000 - public float Unknown_10h = 0.825f; // 0x3F533333 (0.825f) + public float EnforceAccededLimits = 0.825f; // 0x3F533333 (0.825f) public byte Unknown_14h; // 0x00 public FragJointType Type { get; set; } - public byte FragIndex1 { get; set; } - public byte FragIndex2 { get; set; } + public byte ParentLinkIndex { get; set; } + public byte ChildLinkIndex { get; set; } public ulong Unknown_18h; // 0x0000000000000000 public override void Read(ResourceDataReader reader, params object[] parameters) { // read structure data this.VFT = reader.ReadUInt32(); - this.Unknown_04h = reader.ReadUInt32(); + this.DefaultStiffness = reader.ReadUInt32(); this.Unknown_08h = reader.ReadUInt64(); - this.Unknown_10h = reader.ReadSingle(); + this.EnforceAccededLimits = reader.ReadSingle(); this.Unknown_14h = reader.ReadByte(); this.Type = (FragJointType)reader.ReadByte(); - this.FragIndex1 = reader.ReadByte(); - this.FragIndex2 = reader.ReadByte(); + this.ParentLinkIndex = reader.ReadByte(); + this.ChildLinkIndex = reader.ReadByte(); this.Unknown_18h = reader.ReadUInt64(); //if (Unknown_04h != 1) @@ -2973,26 +2973,28 @@ namespace CodeWalker.GameFiles { // write structure data writer.Write(this.VFT); - writer.Write(this.Unknown_04h); + writer.Write(this.DefaultStiffness); writer.Write(this.Unknown_08h); - writer.Write(this.Unknown_10h); + writer.Write(this.EnforceAccededLimits); writer.Write(this.Unknown_14h); writer.Write((byte)this.Type); - writer.Write(this.FragIndex1); - writer.Write(this.FragIndex2); + writer.Write(this.ParentLinkIndex); + writer.Write(this.ChildLinkIndex); writer.Write(this.Unknown_18h); } public virtual void WriteXml(StringBuilder sb, int indent) { - YftXml.ValueTag(sb, indent, "FragIndex1", FragIndex1.ToString()); - YftXml.ValueTag(sb, indent, "FragIndex2", FragIndex2.ToString()); - YftXml.ValueTag(sb, indent, "Unknown10", FloatUtil.ToString(Unknown_10h)); + YftXml.ValueTag(sb, indent, "ParentLinkIndex", ParentLinkIndex.ToString()); + YftXml.ValueTag(sb, indent, "ChildLinkIndex", ChildLinkIndex.ToString()); + YftXml.ValueTag(sb, indent, "EnforceAccededLimits", FloatUtil.ToString(EnforceAccededLimits)); + YftXml.ValueTag(sb, indent, "DefaultStiffness", DefaultStiffness.ToString()); } public virtual void ReadXml(XmlNode node) { - FragIndex1 = (byte)Xml.GetChildUIntAttribute(node, "FragIndex1", "value"); - FragIndex2 = (byte)Xml.GetChildUIntAttribute(node, "FragIndex2", "value"); - Unknown_10h = Xml.GetChildFloatAttribute(node, "Unknown10", "value"); + ParentLinkIndex = (byte)Xml.GetChildUIntAttribute(node, "ParentLinkIndex", "value"); + ChildLinkIndex = (byte)Xml.GetChildUIntAttribute(node, "ChildLinkIndex", "value"); + EnforceAccededLimits = Xml.GetChildFloatAttribute(node, "EnforceAccededLimits", "value"); + DefaultStiffness = Xml.GetChildUIntAttribute(node, "DefaultStiffness", "value"); } public static FragPhysJointType Create(FragJointType type) @@ -3333,10 +3335,10 @@ namespace CodeWalker.GameFiles public ulong Unknown_38h; // 0x0000000000000000 public float Mass { get; set; } //in pounds, of course public float MassInv { get; set; } // 1.0 / Mass - public float Unknown_48h { get; set; } = 1.0f; // 1.0f - public float Unknown_4Ch { get; set; } = 150.0f; // 150.0f - public float Unknown_50h { get; set; } = 6.2831855f; // 6.2831855f = 2*pi - public float Unknown_54h { get; set; } = 1.0f; // 1.0f + public float GravityFactor { get; set; } = 1.0f; // 1.0f + public float MaxSpeed { get; set; } = 150.0f; // 150.0f + public float MaxAngSpeed { get; set; } = 6.2831855f; // 6.2831855f = 2*pi + public float BuoyancyFactor { get; set; } = 1.0f; // 1.0f public ulong Unknown_58h; // 0x0000000000000000 public Vector3 InertiaTensor { get; set; } public uint Unknown_6Ch = 0x7fc00001; // 0x7fc00001 @@ -3381,10 +3383,10 @@ namespace CodeWalker.GameFiles this.Unknown_38h = reader.ReadUInt64(); this.Mass = reader.ReadSingle(); this.MassInv = reader.ReadSingle(); - this.Unknown_48h = reader.ReadSingle(); - this.Unknown_4Ch = reader.ReadSingle(); - this.Unknown_50h = reader.ReadSingle(); - this.Unknown_54h = reader.ReadSingle(); + this.GravityFactor = reader.ReadSingle(); + this.MaxSpeed = reader.ReadSingle(); + this.MaxAngSpeed = reader.ReadSingle(); + this.BuoyancyFactor = reader.ReadSingle(); this.Unknown_58h = reader.ReadUInt64(); this.InertiaTensor = reader.ReadVector3(); this.Unknown_6Ch = reader.ReadUInt32(); @@ -3513,10 +3515,10 @@ namespace CodeWalker.GameFiles writer.Write(this.Unknown_38h); writer.Write(this.Mass); writer.Write(this.MassInv); - writer.Write(this.Unknown_48h); - writer.Write(this.Unknown_4Ch); - writer.Write(this.Unknown_50h); - writer.Write(this.Unknown_54h); + writer.Write(this.GravityFactor); + writer.Write(this.MaxSpeed); + writer.Write(this.MaxAngSpeed); + writer.Write(this.BuoyancyFactor); writer.Write(this.Unknown_58h); writer.Write(this.InertiaTensor); writer.Write(this.Unknown_6Ch); @@ -3540,10 +3542,10 @@ namespace CodeWalker.GameFiles YftXml.StringTag(sb, indent, "Name", YftXml.XmlEscape(Name)); YftXml.ValueTag(sb, indent, "Mass", FloatUtil.ToString(Mass)); YftXml.ValueTag(sb, indent, "MassInv", FloatUtil.ToString(MassInv)); - YftXml.ValueTag(sb, indent, "Unknown48", FloatUtil.ToString(Unknown_48h)); - YftXml.ValueTag(sb, indent, "Unknown4C", FloatUtil.ToString(Unknown_4Ch)); - YftXml.ValueTag(sb, indent, "Unknown50", FloatUtil.ToString(Unknown_50h)); - YftXml.ValueTag(sb, indent, "Unknown54", FloatUtil.ToString(Unknown_54h)); + YftXml.ValueTag(sb, indent, "GravityFactor", FloatUtil.ToString(GravityFactor)); + YftXml.ValueTag(sb, indent, "MaxSpeed", FloatUtil.ToString(MaxSpeed)); + YftXml.ValueTag(sb, indent, "MaxAngSpeed", FloatUtil.ToString(MaxAngSpeed)); + YftXml.ValueTag(sb, indent, "BuoyancyFactor", FloatUtil.ToString(BuoyancyFactor)); YftXml.SelfClosingTag(sb, indent, "InertiaTensor " + FloatUtil.GetVector3XmlString(InertiaTensor)); YftXml.SelfClosingTag(sb, indent, "InertiaTensorInv " + FloatUtil.GetVector3XmlString(InertiaTensorInv)); if (Bound != null) @@ -3556,10 +3558,10 @@ namespace CodeWalker.GameFiles Name = Xml.GetChildInnerText(node, "Name"); Mass = Xml.GetChildFloatAttribute(node, "Mass", "value"); MassInv = Xml.GetChildFloatAttribute(node, "MassInv", "value"); - Unknown_48h = Xml.GetChildFloatAttribute(node, "Unknown48", "value"); - Unknown_4Ch = Xml.GetChildFloatAttribute(node, "Unknown4C", "value"); - Unknown_50h = Xml.GetChildFloatAttribute(node, "Unknown50", "value"); - Unknown_54h = Xml.GetChildFloatAttribute(node, "Unknown54", "value"); + GravityFactor = Xml.GetChildFloatAttribute(node, "GravityFactor", "value"); + MaxSpeed = Xml.GetChildFloatAttribute(node, "MaxSpeed", "value"); + MaxAngSpeed = Xml.GetChildFloatAttribute(node, "MaxAngSpeed", "value"); + BuoyancyFactor = Xml.GetChildFloatAttribute(node, "BuoyancyFactor", "value"); InertiaTensor = Xml.GetChildVector3Attributes(node, "InertiaTensor"); InertiaTensorInv = Xml.GetChildVector3Attributes(node, "InertiaTensorInv"); var bnode = node.SelectSingleNode("Bounds"); @@ -3971,17 +3973,17 @@ namespace CodeWalker.GameFiles public byte GlassFlags { get; set; }//flags: 1=?, 2=glass, 4=?, ... public float MinDamageForce { get; set; } public float DamageHealth { get; set; } - public float UnkFloat5C { get; set; } - public float UnkFloat60 { get; set; } - public float UnkFloat64 { get; set; } - public float UnkFloat68 { get; set; } - public float UnkFloat6C { get; set; } - public float UnkFloat70 { get; set; } - public float UnkFloat74 { get; set; } - public float UnkFloat78 { get; set; } + public float WeaponHealth { get; set; } + public float WeaponScale { get; set; } + public float VehicleScale { get; set; } + public float PedScale { get; set; } + public float RagdollScale { get; set; } + public float ExplosionScale { get; set; } + public float ObjectScale { get; set; } + public float PedInvMassScale { get; set; } public float Unknown_7Ch; // 0x00000000 public FragPhysNameStruct_s Name { get; set; } - public float UnkFloatA8 { get; set; } + public float MeleeScale { get; set; } public float Unknown_ACh; // 0x00000000 public override void Read(ResourceDataReader reader, params object[] parameters) @@ -4015,17 +4017,17 @@ namespace CodeWalker.GameFiles this.GlassFlags = reader.ReadByte(); this.MinDamageForce = reader.ReadSingle(); this.DamageHealth = reader.ReadSingle(); - this.UnkFloat5C = reader.ReadSingle(); - this.UnkFloat60 = reader.ReadSingle(); - this.UnkFloat64 = reader.ReadSingle(); - this.UnkFloat68 = reader.ReadSingle(); - this.UnkFloat6C = reader.ReadSingle(); - this.UnkFloat70 = reader.ReadSingle(); - this.UnkFloat74 = reader.ReadSingle(); - this.UnkFloat78 = reader.ReadSingle(); + this.WeaponHealth = reader.ReadSingle(); + this.WeaponScale = reader.ReadSingle(); + this.VehicleScale = reader.ReadSingle(); + this.PedScale = reader.ReadSingle(); + this.RagdollScale = reader.ReadSingle(); + this.ExplosionScale = reader.ReadSingle(); + this.ObjectScale = reader.ReadSingle(); + this.PedInvMassScale = reader.ReadSingle(); this.Unknown_7Ch = reader.ReadSingle(); this.Name = reader.ReadStruct(); - this.UnkFloatA8 = reader.ReadSingle(); + this.MeleeScale = reader.ReadSingle(); this.Unknown_ACh = reader.ReadSingle(); //if (Unknown_00h != 0) @@ -4138,17 +4140,17 @@ namespace CodeWalker.GameFiles writer.Write(GlassFlags); writer.Write(MinDamageForce); writer.Write(DamageHealth); - writer.Write(UnkFloat5C); - writer.Write(UnkFloat60); - writer.Write(UnkFloat64); - writer.Write(UnkFloat68); - writer.Write(UnkFloat6C); - writer.Write(UnkFloat70); - writer.Write(UnkFloat74); - writer.Write(UnkFloat78); + writer.Write(WeaponHealth); + writer.Write(WeaponScale); + writer.Write(VehicleScale); + writer.Write(PedScale); + writer.Write(RagdollScale); + writer.Write(ExplosionScale); + writer.Write(ObjectScale); + writer.Write(PedInvMassScale); writer.Write(Unknown_7Ch); writer.WriteStruct(Name); - writer.Write(UnkFloatA8); + writer.Write(MeleeScale); writer.Write(Unknown_ACh); } public void WriteXml(StringBuilder sb, int indent) @@ -4173,15 +4175,15 @@ namespace CodeWalker.GameFiles YftXml.ValueTag(sb, indent, "Mass", FloatUtil.ToString(Mass)); YftXml.ValueTag(sb, indent, "MinDamageForce", FloatUtil.ToString(MinDamageForce)); YftXml.ValueTag(sb, indent, "DamageHealth", FloatUtil.ToString(DamageHealth)); - YftXml.ValueTag(sb, indent, "UnkFloat5C", FloatUtil.ToString(UnkFloat5C)); - YftXml.ValueTag(sb, indent, "UnkFloat60", FloatUtil.ToString(UnkFloat60)); - YftXml.ValueTag(sb, indent, "UnkFloat64", FloatUtil.ToString(UnkFloat64)); - YftXml.ValueTag(sb, indent, "UnkFloat68", FloatUtil.ToString(UnkFloat68)); - YftXml.ValueTag(sb, indent, "UnkFloat6C", FloatUtil.ToString(UnkFloat6C)); - YftXml.ValueTag(sb, indent, "UnkFloat70", FloatUtil.ToString(UnkFloat70)); - YftXml.ValueTag(sb, indent, "UnkFloat74", FloatUtil.ToString(UnkFloat74)); - YftXml.ValueTag(sb, indent, "UnkFloat78", FloatUtil.ToString(UnkFloat78)); - YftXml.ValueTag(sb, indent, "UnkFloatA8", FloatUtil.ToString(UnkFloatA8)); + YftXml.ValueTag(sb, indent, "WeaponHealth", FloatUtil.ToString(WeaponHealth)); + YftXml.ValueTag(sb, indent, "WeaponScale", FloatUtil.ToString(WeaponScale)); + YftXml.ValueTag(sb, indent, "VehicleScale", FloatUtil.ToString(VehicleScale)); + YftXml.ValueTag(sb, indent, "PedScale", FloatUtil.ToString(PedScale)); + YftXml.ValueTag(sb, indent, "RagdollScale", FloatUtil.ToString(RagdollScale)); + YftXml.ValueTag(sb, indent, "ExplosionScale", FloatUtil.ToString(ExplosionScale)); + YftXml.ValueTag(sb, indent, "ObjectScale", FloatUtil.ToString(ObjectScale)); + YftXml.ValueTag(sb, indent, "PedInvMassScale", FloatUtil.ToString(PedInvMassScale)); + YftXml.ValueTag(sb, indent, "MeleeScale", FloatUtil.ToString(MeleeScale)); } public void ReadXml(XmlNode node) { @@ -4205,15 +4207,15 @@ namespace CodeWalker.GameFiles Mass = Xml.GetChildFloatAttribute(node, "Mass", "value"); MinDamageForce = Xml.GetChildFloatAttribute(node, "MinDamageForce", "value"); DamageHealth = Xml.GetChildFloatAttribute(node, "DamageHealth", "value"); - UnkFloat5C = Xml.GetChildFloatAttribute(node, "UnkFloat5C", "value"); - UnkFloat60 = Xml.GetChildFloatAttribute(node, "UnkFloat60", "value"); - UnkFloat64 = Xml.GetChildFloatAttribute(node, "UnkFloat64", "value"); - UnkFloat68 = Xml.GetChildFloatAttribute(node, "UnkFloat68", "value"); - UnkFloat6C = Xml.GetChildFloatAttribute(node, "UnkFloat6C", "value"); - UnkFloat70 = Xml.GetChildFloatAttribute(node, "UnkFloat70", "value"); - UnkFloat74 = Xml.GetChildFloatAttribute(node, "UnkFloat74", "value"); - UnkFloat78 = Xml.GetChildFloatAttribute(node, "UnkFloat78", "value"); - UnkFloatA8 = Xml.GetChildFloatAttribute(node, "UnkFloatA8", "value"); + WeaponHealth = Xml.GetChildFloatAttribute(node, "WeaponHealth", "value"); + WeaponScale = Xml.GetChildFloatAttribute(node, "WeaponScale", "value"); + VehicleScale = Xml.GetChildFloatAttribute(node, "VehicleScale", "value"); + PedScale = Xml.GetChildFloatAttribute(node, "PedScale", "value"); + RagdollScale = Xml.GetChildFloatAttribute(node, "RagdollScale", "value"); + ExplosionScale = Xml.GetChildFloatAttribute(node, "ExplosionScale", "value"); + ObjectScale = Xml.GetChildFloatAttribute(node, "ObjectScale", "value"); + PedInvMassScale = Xml.GetChildFloatAttribute(node, "PedInvMassScale", "value"); + MeleeScale = Xml.GetChildFloatAttribute(node, "MeleeScale", "value"); } public override string ToString()