Audio updates

This commit is contained in:
Monkeypolice188 2021-12-08 15:15:44 +00:00
parent e812674e69
commit f2819b35f6
4 changed files with 253 additions and 298 deletions

View File

@ -4449,7 +4449,7 @@ namespace CodeWalker.GameFiles
} }
[TC(typeof(EXP))] public class Dat54AutomationSound : Dat54Sound [TC(typeof(EXP))] public class Dat54AutomationSound : Dat54Sound
{ {
public MetaHash AutomationChildSound { get; set; } //?? public MetaHash FallBackSound { get; set; } //fallback sound
public float PlaybackRate { get; set; } //0x4-0x8 //rate at which the midi is played back, 1.0 default public float PlaybackRate { get; set; } //0x4-0x8 //rate at which the midi is played back, 1.0 default
public float PlaybackRateVariance { get; set; } //0x8-0xC //variance of the playback rate public float PlaybackRateVariance { get; set; } //0x8-0xC //variance of the playback rate
public MetaHash PlaybackRateParameter { get; set; } //0xC-0x10 //parameter override for playback rate public MetaHash PlaybackRateParameter { get; set; } //0xC-0x10 //parameter override for playback rate
@ -4463,12 +4463,12 @@ namespace CodeWalker.GameFiles
{ } { }
public Dat54AutomationSound(RelData d, BinaryReader br) : base(d, br) public Dat54AutomationSound(RelData d, BinaryReader br) : base(d, br)
{ {
AutomationChildSound = br.ReadUInt32(); FallBackSound = br.ReadUInt32();
PlaybackRate = br.ReadSingle(); PlaybackRate = br.ReadSingle();
PlaybackRateVariance = br.ReadSingle(); PlaybackRateVariance = br.ReadSingle();
PlaybackRateParameter = br.ReadUInt32(); PlaybackRateParameter = br.ReadUInt32();
Map = br.ReadUInt32(); Map = br.ReadUInt32();
AudioTrackHashes = new[] { AutomationChildSound, Map }; AudioTrackHashes = new[] { FallBackSound, Map };
ContainerName = br.ReadUInt32(); ContainerName = br.ReadUInt32();
FileName = br.ReadUInt32(); FileName = br.ReadUInt32();
UnkDataCount = br.ReadInt32(); UnkDataCount = br.ReadInt32();
@ -4481,7 +4481,7 @@ namespace CodeWalker.GameFiles
public override void ReadXml(XmlNode node) public override void ReadXml(XmlNode node)
{ {
base.ReadXml(node); base.ReadXml(node);
AutomationChildSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "AutomationChildSound")); FallBackSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "FallBackSound"));
PlaybackRate = Xml.GetChildFloatAttribute(node, "PlaybackRate", "value"); PlaybackRate = Xml.GetChildFloatAttribute(node, "PlaybackRate", "value");
PlaybackRateVariance = Xml.GetChildFloatAttribute(node, "PlaybackRateVariance", "value"); PlaybackRateVariance = Xml.GetChildFloatAttribute(node, "PlaybackRateVariance", "value");
PlaybackRateParameter = XmlRel.GetHash(Xml.GetChildInnerText(node, "PlaybackRateParameter")); PlaybackRateParameter = XmlRel.GetHash(Xml.GetChildInnerText(node, "PlaybackRateParameter"));
@ -4494,7 +4494,7 @@ namespace CodeWalker.GameFiles
public override void WriteXml(StringBuilder sb, int indent) public override void WriteXml(StringBuilder sb, int indent)
{ {
base.WriteXml(sb, indent); base.WriteXml(sb, indent);
RelXml.StringTag(sb, indent, "AutomationChildSound", RelXml.HashString(AutomationChildSound)); RelXml.StringTag(sb, indent, "FallBackSound", RelXml.HashString(FallBackSound));
RelXml.ValueTag(sb, indent, "PlaybackRate", FloatUtil.ToString(PlaybackRate)); RelXml.ValueTag(sb, indent, "PlaybackRate", FloatUtil.ToString(PlaybackRate));
RelXml.ValueTag(sb, indent, "PlaybackRateVariance", FloatUtil.ToString(PlaybackRateVariance)); RelXml.ValueTag(sb, indent, "PlaybackRateVariance", FloatUtil.ToString(PlaybackRateVariance));
RelXml.StringTag(sb, indent, "PlaybackRateParameter", RelXml.HashString(PlaybackRateParameter)); RelXml.StringTag(sb, indent, "PlaybackRateParameter", RelXml.HashString(PlaybackRateParameter));
@ -4506,7 +4506,7 @@ namespace CodeWalker.GameFiles
public override void Write(BinaryWriter bw) public override void Write(BinaryWriter bw)
{ {
base.Write(bw); base.Write(bw);
bw.Write(AutomationChildSound); bw.Write(FallBackSound);
bw.Write(PlaybackRate); bw.Write(PlaybackRate);
bw.Write(PlaybackRateVariance); bw.Write(PlaybackRateVariance);
bw.Write(PlaybackRateParameter); bw.Write(PlaybackRateParameter);
@ -5519,10 +5519,8 @@ namespace CodeWalker.GameFiles
public float Unk01 { get; set; } //1, 5, 100, ... public float Unk01 { get; set; } //1, 5, 100, ...
public float InnerRad { get; set; } //0, 4, ... 100 ... min value? public float InnerRad { get; set; } //0, 4, ... 100 ... min value?
public float OuterRad { get; set; } //15, 16, 12, 10, 20, 300 ... max value? public float OuterRad { get; set; } //15, 16, 12, 10, 20, 300 ... max value?
public FlagsByte Unk02 { get; set; } public FlagsUshort StartTime { get; set; }
public FlagsByte Unk03 { get; set; } //0,1,2,3,4,5 public FlagsUshort EndTime { get; set; }
public FlagsByte Unk04 { get; set; }
public FlagsByte Unk05 { get; set; } //0,1,2,3,4,5
public FlagsUshort Unk06 { get; set; } //0..600 public FlagsUshort Unk06 { get; set; } //0..600
public FlagsUshort Unk07 { get; set; } //0..150 public FlagsUshort Unk07 { get; set; } //0..150
public FlagsByte Unk08 { get; set; } //0,1,2 public FlagsByte Unk08 { get; set; } //0,1,2
@ -5590,10 +5588,8 @@ namespace CodeWalker.GameFiles
Unk01 = br.ReadSingle(); //1, 5, 100, ... Unk01 = br.ReadSingle(); //1, 5, 100, ...
InnerRad = br.ReadSingle(); //0, 4, ... 100 ... min value? InnerRad = br.ReadSingle(); //0, 4, ... 100 ... min value?
OuterRad = br.ReadSingle(); //15, 16, 12, 10, 20, 300 ... max value? OuterRad = br.ReadSingle(); //15, 16, 12, 10, 20, 300 ... max value?
Unk02 = br.ReadByte(); StartTime = br.ReadUInt16();
Unk03 = br.ReadByte(); //0,1,2,3,4,5 EndTime = br.ReadUInt16();
Unk04 = br.ReadByte();
Unk05 = br.ReadByte(); //0,1,2,3,4,5
Unk06 = br.ReadUInt16(); //0..600 Unk06 = br.ReadUInt16(); //0..600
Unk07 = br.ReadUInt16(); //0..150 Unk07 = br.ReadUInt16(); //0..150
Unk08 = br.ReadByte(); //0,1,2 Unk08 = br.ReadByte(); //0,1,2
@ -5627,37 +5623,13 @@ namespace CodeWalker.GameFiles
#region testing #region testing
switch (Unk02.Value)//no pattern? switch (StartTime.Value)//ushort in minutes
{ {
default: default:
break; break;
} }
switch (Unk03.Value) switch (EndTime.Value)//ushort in minutes
{ {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
break;
default:
break;
}
switch (Unk04.Value)//no pattern?
{
default:
break;
}
switch (Unk05.Value)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
break;
default: default:
break; break;
} }
@ -5877,10 +5849,8 @@ namespace CodeWalker.GameFiles
bw.Write(Unk01); bw.Write(Unk01);
bw.Write(InnerRad); bw.Write(InnerRad);
bw.Write(OuterRad); bw.Write(OuterRad);
bw.Write(Unk02); bw.Write(StartTime);
bw.Write(Unk03); bw.Write(EndTime);
bw.Write(Unk04);
bw.Write(Unk05);
bw.Write(Unk06); bw.Write(Unk06);
bw.Write(Unk07); bw.Write(Unk07);
bw.Write(Unk08); bw.Write(Unk08);
@ -5917,10 +5887,8 @@ namespace CodeWalker.GameFiles
RelXml.ValueTag(sb, indent, "Unk01", FloatUtil.ToString(Unk01)); RelXml.ValueTag(sb, indent, "Unk01", FloatUtil.ToString(Unk01));
RelXml.ValueTag(sb, indent, "InnerRad", FloatUtil.ToString(InnerRad)); RelXml.ValueTag(sb, indent, "InnerRad", FloatUtil.ToString(InnerRad));
RelXml.ValueTag(sb, indent, "OuterRad", FloatUtil.ToString(OuterRad)); RelXml.ValueTag(sb, indent, "OuterRad", FloatUtil.ToString(OuterRad));
RelXml.ValueTag(sb, indent, "Unk02", Unk02.Value.ToString()); RelXml.ValueTag(sb, indent, "StartTime", StartTime.Value.ToString());
RelXml.ValueTag(sb, indent, "Unk03", Unk03.Value.ToString()); RelXml.ValueTag(sb, indent, "EndTime", EndTime.Value.ToString());
RelXml.ValueTag(sb, indent, "Unk04", Unk04.Value.ToString());
RelXml.ValueTag(sb, indent, "Unk05", Unk05.Value.ToString());
RelXml.ValueTag(sb, indent, "Unk06", Unk06.Value.ToString()); RelXml.ValueTag(sb, indent, "Unk06", Unk06.Value.ToString());
RelXml.ValueTag(sb, indent, "Unk07", Unk07.Value.ToString()); RelXml.ValueTag(sb, indent, "Unk07", Unk07.Value.ToString());
RelXml.ValueTag(sb, indent, "Unk08", Unk08.Value.ToString()); RelXml.ValueTag(sb, indent, "Unk08", Unk08.Value.ToString());
@ -5946,10 +5914,8 @@ namespace CodeWalker.GameFiles
Unk01 = Xml.GetChildFloatAttribute(node, "Unk01", "value"); Unk01 = Xml.GetChildFloatAttribute(node, "Unk01", "value");
InnerRad = Xml.GetChildFloatAttribute(node, "InnerRad", "value"); InnerRad = Xml.GetChildFloatAttribute(node, "InnerRad", "value");
OuterRad = Xml.GetChildFloatAttribute(node, "OuterRad", "value"); OuterRad = Xml.GetChildFloatAttribute(node, "OuterRad", "value");
Unk02 = (byte)Xml.GetChildUIntAttribute(node, "Unk02", "value"); StartTime = (ushort)Xml.GetChildUIntAttribute(node, "StartTime", "value");
Unk03 = (byte)Xml.GetChildUIntAttribute(node, "Unk03", "value"); EndTime = (ushort)Xml.GetChildUIntAttribute(node, "EndTime", "value");
Unk04 = (byte)Xml.GetChildUIntAttribute(node, "Unk04", "value");
Unk05 = (byte)Xml.GetChildUIntAttribute(node, "Unk05", "value");
Unk06 = (ushort)Xml.GetChildUIntAttribute(node, "Unk06", "value"); Unk06 = (ushort)Xml.GetChildUIntAttribute(node, "Unk06", "value");
Unk07 = (ushort)Xml.GetChildUIntAttribute(node, "Unk07", "value"); Unk07 = (ushort)Xml.GetChildUIntAttribute(node, "Unk07", "value");
Unk08 = (byte)Xml.GetChildUIntAttribute(node, "Unk08", "value"); Unk08 = (byte)Xml.GetChildUIntAttribute(node, "Unk08", "value");
@ -6693,7 +6659,7 @@ namespace CodeWalker.GameFiles
{ {
public MetaHash FallBackWeapon { get; set; } public MetaHash FallBackWeapon { get; set; }
public uint AudioItemCount { get; set; } public uint AudioItemCount { get; set; }
public Dat151HashPair[] Weapons { get; set; } public Dat151WeaponAudioItemItem[] Weapons { get; set; }
public Dat151WeaponAudioItem(RelFile rel) : base(rel) public Dat151WeaponAudioItem(RelFile rel) : base(rel)
{ {
@ -6705,10 +6671,10 @@ namespace CodeWalker.GameFiles
FallBackWeapon = br.ReadUInt32(); FallBackWeapon = br.ReadUInt32();
AudioItemCount = br.ReadUInt32(); AudioItemCount = br.ReadUInt32();
Dat151HashPair[] items = new Dat151HashPair[AudioItemCount]; Dat151WeaponAudioItemItem[] items = new Dat151WeaponAudioItemItem[AudioItemCount];
for (int i = 0; i < AudioItemCount; i++) for (int i = 0; i < AudioItemCount; i++)
{ {
items[i] = new Dat151HashPair(br); items[i] = new Dat151WeaponAudioItemItem(br);
} }
this.Weapons = items; this.Weapons = items;
@ -6734,7 +6700,7 @@ namespace CodeWalker.GameFiles
public override void ReadXml(XmlNode node) public override void ReadXml(XmlNode node)
{ {
FallBackWeapon = XmlRel.GetHash(Xml.GetChildInnerText(node, "FallBackWeapon")); FallBackWeapon = XmlRel.GetHash(Xml.GetChildInnerText(node, "FallBackWeapon"));
Weapons = XmlRel.ReadItemArray<Dat151HashPair>(node, "Weapons"); Weapons = XmlRel.ReadItemArray<Dat151WeaponAudioItemItem>(node, "Weapons");
AudioItemCount = (uint)(Weapons?.Length ?? 0); AudioItemCount = (uint)(Weapons?.Length ?? 0);
} }
public override uint[] GetHashTableOffsets() public override uint[] GetHashTableOffsets()
@ -6748,6 +6714,38 @@ namespace CodeWalker.GameFiles
return offsets.ToArray(); return offsets.ToArray();
} }
} }
[TC(typeof(EXP))]
public struct Dat151WeaponAudioItemItem : IMetaXmlItem
{
public MetaHash Category { get; set; }
public MetaHash Weapon { get; set; }
public Dat151WeaponAudioItemItem(BinaryReader br)
{
Category = br.ReadUInt32();
Weapon = br.ReadUInt32();
}
public void Write(BinaryWriter bw)
{
bw.Write(Category);
bw.Write(Weapon);
}
public void WriteXml(StringBuilder sb, int indent)
{
RelXml.StringTag(sb, indent, "Category", RelXml.HashString(Category));
RelXml.StringTag(sb, indent, "Weapon", RelXml.HashString(Weapon));
}
public void ReadXml(XmlNode node)
{
Category = XmlRel.GetHash(Xml.GetChildInnerText(node, "Category"));
Weapon = XmlRel.GetHash(Xml.GetChildInnerText(node, "Weapon"));
}
public override string ToString()
{
return Category.ToString() + ": " + Weapon.ToString();
}
}
[TC(typeof(EXP))] public class Dat151StartTrackAction : Dat151RelData [TC(typeof(EXP))] public class Dat151StartTrackAction : Dat151RelData
{ {
public FlagsUint Unk0 { get; set; } public FlagsUint Unk0 { get; set; }
@ -6756,15 +6754,15 @@ namespace CodeWalker.GameFiles
public MetaHash AudioTrack0 { get; set; } public MetaHash AudioTrack0 { get; set; }
public MetaHash AudioTrack1 { get; set; } public MetaHash AudioTrack1 { get; set; }
public float Unk3 { get; set; } public float Unk3 { get; set; }
public MetaHash Unk4 { get; set; } public MetaHash Track { get; set; }
public MetaHash AudioTrack2 { get; set; } public MetaHash Mood { get; set; }
public float Unk5 { get; set; } public float Unk5 { get; set; }
public int Unk6 { get; set; } public int Unk6 { get; set; }
public int Unk7 { get; set; } public int Unk7 { get; set; }
public float Unk8 { get; set; } public float Unk8 { get; set; }
public int Unk9 { get; set; } public int Unk9 { get; set; }
public uint ItemCount { get; set; } public uint TracksCount { get; set; }
public Dat151HashPair[] Items { get; set; } public Dat151StartTrackActionItem[] Tracks { get; set; }
public Dat151StartTrackAction(RelFile rel) : base(rel) public Dat151StartTrackAction(RelFile rel) : base(rel)
@ -6780,21 +6778,21 @@ namespace CodeWalker.GameFiles
AudioTrack0 = br.ReadUInt32(); AudioTrack0 = br.ReadUInt32();
AudioTrack1 = br.ReadUInt32(); AudioTrack1 = br.ReadUInt32();
Unk3 = br.ReadSingle(); Unk3 = br.ReadSingle();
Unk4 = br.ReadUInt32(); Track = br.ReadUInt32();
AudioTrack2 = br.ReadUInt32(); Mood = br.ReadUInt32();
Unk5 = br.ReadSingle(); Unk5 = br.ReadSingle();
Unk6 = br.ReadInt32(); Unk6 = br.ReadInt32();
Unk7 = br.ReadInt32(); Unk7 = br.ReadInt32();
Unk8 = br.ReadSingle(); Unk8 = br.ReadSingle();
Unk9 = br.ReadInt32(); Unk9 = br.ReadInt32();
ItemCount = br.ReadUInt32(); TracksCount = br.ReadUInt32();
Dat151HashPair[] items = new Dat151HashPair[ItemCount]; Dat151StartTrackActionItem[] items = new Dat151StartTrackActionItem[TracksCount];
for (int i = 0; i < ItemCount; i++) for (int i = 0; i < TracksCount; i++)
{ {
items[i] = new Dat151HashPair(br); items[i] = new Dat151StartTrackActionItem(br);
} }
this.Items = items; this.Tracks = items;
if (Unk1 != 0) if (Unk1 != 0)
{ } { }
@ -6813,18 +6811,18 @@ namespace CodeWalker.GameFiles
bw.Write(AudioTrack0); bw.Write(AudioTrack0);
bw.Write(AudioTrack1); bw.Write(AudioTrack1);
bw.Write(Unk3); bw.Write(Unk3);
bw.Write(Unk4); bw.Write(Track);
bw.Write(AudioTrack2); bw.Write(Mood);
bw.Write(Unk5); bw.Write(Unk5);
bw.Write(Unk6); bw.Write(Unk6);
bw.Write(Unk7); bw.Write(Unk7);
bw.Write(Unk8); bw.Write(Unk8);
bw.Write(Unk9); bw.Write(Unk9);
bw.Write(ItemCount); bw.Write(TracksCount);
for (int i = 0; i < ItemCount; i++) for (int i = 0; i < TracksCount; i++)
{ {
Items[i].Write(bw); Tracks[i].Write(bw);
} }
} }
@ -6836,14 +6834,14 @@ namespace CodeWalker.GameFiles
RelXml.StringTag(sb, indent, "AudioTrack0", RelXml.HashString(AudioTrack0)); RelXml.StringTag(sb, indent, "AudioTrack0", RelXml.HashString(AudioTrack0));
RelXml.StringTag(sb, indent, "AudioTrack1", RelXml.HashString(AudioTrack1)); RelXml.StringTag(sb, indent, "AudioTrack1", RelXml.HashString(AudioTrack1));
RelXml.ValueTag(sb, indent, "Unk3", FloatUtil.ToString(Unk3)); RelXml.ValueTag(sb, indent, "Unk3", FloatUtil.ToString(Unk3));
RelXml.StringTag(sb, indent, "Unk4", RelXml.HashString(Unk4)); RelXml.StringTag(sb, indent, "Track", RelXml.HashString(Track));
RelXml.StringTag(sb, indent, "AudioTrack2", RelXml.HashString(AudioTrack2)); RelXml.StringTag(sb, indent, "Mood", RelXml.HashString(Mood));
RelXml.ValueTag(sb, indent, "Unk5", FloatUtil.ToString(Unk5)); RelXml.ValueTag(sb, indent, "Unk5", FloatUtil.ToString(Unk5));
RelXml.ValueTag(sb, indent, "Unk6", Unk6.ToString()); RelXml.ValueTag(sb, indent, "Unk6", Unk6.ToString());
RelXml.ValueTag(sb, indent, "Unk7", Unk7.ToString()); RelXml.ValueTag(sb, indent, "Unk7", Unk7.ToString());
RelXml.ValueTag(sb, indent, "Unk8", FloatUtil.ToString(Unk8)); RelXml.ValueTag(sb, indent, "Unk8", FloatUtil.ToString(Unk8));
RelXml.ValueTag(sb, indent, "Unk9", Unk9.ToString()); RelXml.ValueTag(sb, indent, "Unk9", Unk9.ToString());
RelXml.WriteItemArray(sb, Items, indent, "Items"); RelXml.WriteItemArray(sb, Tracks, indent, "Tracks");
} }
public override void ReadXml(XmlNode node) public override void ReadXml(XmlNode node)
{ {
@ -6853,21 +6851,54 @@ namespace CodeWalker.GameFiles
AudioTrack0 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack0")); AudioTrack0 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack0"));
AudioTrack1 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack1")); AudioTrack1 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack1"));
Unk3 = Xml.GetChildFloatAttribute(node, "Unk3", "value"); Unk3 = Xml.GetChildFloatAttribute(node, "Unk3", "value");
Unk4 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk4")); Track = XmlRel.GetHash(Xml.GetChildInnerText(node, "Track"));
AudioTrack2 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack2")); Mood = XmlRel.GetHash(Xml.GetChildInnerText(node, "Mood"));
Unk5 = Xml.GetChildFloatAttribute(node, "Unk5", "value"); Unk5 = Xml.GetChildFloatAttribute(node, "Unk5", "value");
Unk6 = Xml.GetChildIntAttribute(node, "Unk6", "value"); Unk6 = Xml.GetChildIntAttribute(node, "Unk6", "value");
Unk7 = Xml.GetChildIntAttribute(node, "Unk7", "value"); Unk7 = Xml.GetChildIntAttribute(node, "Unk7", "value");
Unk8 = Xml.GetChildFloatAttribute(node, "Unk8", "value"); Unk8 = Xml.GetChildFloatAttribute(node, "Unk8", "value");
Unk9 = Xml.GetChildIntAttribute(node, "Unk9", "value"); Unk9 = Xml.GetChildIntAttribute(node, "Unk9", "value");
Items = XmlRel.ReadItemArray<Dat151HashPair>(node, "Items"); Tracks = XmlRel.ReadItemArray<Dat151StartTrackActionItem>(node, "Tracks");
ItemCount = (uint)(Items?.Length ?? 0); TracksCount = (uint)(Tracks?.Length ?? 0);
} }
public override uint[] GetHashTableOffsets() public override uint[] GetHashTableOffsets()
{ {
return new uint[] { 12, 16, 28 }; return new uint[] { 12, 16, 28 };
} }
} }
[TC(typeof(EXP))]
public struct Dat151StartTrackActionItem : IMetaXmlItem
{
public MetaHash Track { get; set; }
public FlagsUint Flags { get; set; }
public Dat151StartTrackActionItem(BinaryReader br)
{
Track = br.ReadUInt32();
Flags = br.ReadUInt32();
}
public void Write(BinaryWriter bw)
{
bw.Write(Track);
bw.Write(Flags);
}
public void WriteXml(StringBuilder sb, int indent)
{
RelXml.StringTag(sb, indent, "Track", RelXml.HashString(Track));
RelXml.ValueTag(sb, indent, "Flags", "0x" + Flags.Hex);
}
public void ReadXml(XmlNode node)
{
Track = XmlRel.GetHash(Xml.GetChildInnerText(node, "Track"));
Flags = Xml.GetChildUIntAttribute(node, "Flags", "value");
}
public override string ToString()
{
return Track.ToString() + ": " + Flags.ToString();
}
}
[TC(typeof(EXP))] public class Dat151StopTrackAction : Dat151RelData [TC(typeof(EXP))] public class Dat151StopTrackAction : Dat151RelData
{ {
public FlagsUint Unk0 { get; set; } public FlagsUint Unk0 { get; set; }
@ -6940,7 +6971,7 @@ namespace CodeWalker.GameFiles
} }
[TC(typeof(EXP))] public class Dat151MoodItem : IMetaXmlItem [TC(typeof(EXP))] public class Dat151MoodItem : IMetaXmlItem
{ {
public MetaHash AudioTrack0 { get; set; } public MetaHash StemMix { get; set; }
public MetaHash AudioTrack1 { get; set; } public MetaHash AudioTrack1 { get; set; }
public float Unk1 { get; set; } public float Unk1 { get; set; }
public float Unk2 { get; set; } public float Unk2 { get; set; }
@ -6951,7 +6982,7 @@ namespace CodeWalker.GameFiles
public override string ToString() public override string ToString()
{ {
return AudioTrack0.ToString(); return StemMix.ToString();
} }
public Dat151MoodItem() public Dat151MoodItem()
@ -6959,7 +6990,7 @@ namespace CodeWalker.GameFiles
} }
public Dat151MoodItem(BinaryReader br) public Dat151MoodItem(BinaryReader br)
{ {
AudioTrack0 = br.ReadUInt32(); StemMix = br.ReadUInt32();
AudioTrack1 = br.ReadUInt32(); AudioTrack1 = br.ReadUInt32();
Unk1 = br.ReadSingle(); Unk1 = br.ReadSingle();
Unk2 = br.ReadSingle(); Unk2 = br.ReadSingle();
@ -6970,7 +7001,7 @@ namespace CodeWalker.GameFiles
} }
public void Write(BinaryWriter bw) public void Write(BinaryWriter bw)
{ {
bw.Write(AudioTrack0); bw.Write(StemMix);
bw.Write(AudioTrack1); bw.Write(AudioTrack1);
bw.Write(Unk1); bw.Write(Unk1);
bw.Write(Unk2); bw.Write(Unk2);
@ -6981,7 +7012,7 @@ namespace CodeWalker.GameFiles
} }
public void WriteXml(StringBuilder sb, int indent) public void WriteXml(StringBuilder sb, int indent)
{ {
RelXml.StringTag(sb, indent, "AudioTrack0", RelXml.HashString(AudioTrack0)); RelXml.StringTag(sb, indent, "StemMix", RelXml.HashString(StemMix));
RelXml.StringTag(sb, indent, "AudioTrack1", RelXml.HashString(AudioTrack1)); RelXml.StringTag(sb, indent, "AudioTrack1", RelXml.HashString(AudioTrack1));
RelXml.ValueTag(sb, indent, "Unk1", FloatUtil.ToString(Unk1)); RelXml.ValueTag(sb, indent, "Unk1", FloatUtil.ToString(Unk1));
RelXml.ValueTag(sb, indent, "Unk2", FloatUtil.ToString(Unk2)); RelXml.ValueTag(sb, indent, "Unk2", FloatUtil.ToString(Unk2));
@ -6992,7 +7023,7 @@ namespace CodeWalker.GameFiles
} }
public void ReadXml(XmlNode node) public void ReadXml(XmlNode node)
{ {
AudioTrack0 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack0")); StemMix = XmlRel.GetHash(Xml.GetChildInnerText(node, "StemMix"));
AudioTrack1 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack1")); AudioTrack1 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack1"));
Unk1 = Xml.GetChildFloatAttribute(node, "Unk1", "value"); Unk1 = Xml.GetChildFloatAttribute(node, "Unk1", "value");
Unk2 = Xml.GetChildFloatAttribute(node, "Unk2", "value"); Unk2 = Xml.GetChildFloatAttribute(node, "Unk2", "value");
@ -7083,7 +7114,7 @@ namespace CodeWalker.GameFiles
public MetaHash AudioTrack0 { get; set; } public MetaHash AudioTrack0 { get; set; }
public MetaHash AudioTrack1 { get; set; } public MetaHash AudioTrack1 { get; set; }
public float Unk3 { get; set; } public float Unk3 { get; set; }
public MetaHash AudioTrack2 { get; set; } public MetaHash Mood { get; set; }
public float Unk4 { get; set; } public float Unk4 { get; set; }
public int Unk5 { get; set; } public int Unk5 { get; set; }
public int Unk6 { get; set; } public int Unk6 { get; set; }
@ -7101,7 +7132,7 @@ namespace CodeWalker.GameFiles
AudioTrack0 = br.ReadUInt32(); AudioTrack0 = br.ReadUInt32();
AudioTrack1 = br.ReadUInt32(); AudioTrack1 = br.ReadUInt32();
Unk3 = br.ReadSingle(); Unk3 = br.ReadSingle();
AudioTrack2 = br.ReadUInt32(); Mood = br.ReadUInt32();
Unk4 = br.ReadSingle(); Unk4 = br.ReadSingle();
Unk5 = br.ReadInt32(); Unk5 = br.ReadInt32();
Unk6 = br.ReadInt32(); Unk6 = br.ReadInt32();
@ -7123,7 +7154,7 @@ namespace CodeWalker.GameFiles
bw.Write(AudioTrack0); bw.Write(AudioTrack0);
bw.Write(AudioTrack1); bw.Write(AudioTrack1);
bw.Write(Unk3); bw.Write(Unk3);
bw.Write(AudioTrack2); bw.Write(Mood);
bw.Write(Unk4); bw.Write(Unk4);
bw.Write(Unk5); bw.Write(Unk5);
bw.Write(Unk6); bw.Write(Unk6);
@ -7136,7 +7167,7 @@ namespace CodeWalker.GameFiles
RelXml.StringTag(sb, indent, "AudioTrack0", RelXml.HashString(AudioTrack0)); RelXml.StringTag(sb, indent, "AudioTrack0", RelXml.HashString(AudioTrack0));
RelXml.StringTag(sb, indent, "AudioTrack1", RelXml.HashString(AudioTrack1)); RelXml.StringTag(sb, indent, "AudioTrack1", RelXml.HashString(AudioTrack1));
RelXml.ValueTag(sb, indent, "Unk3", FloatUtil.ToString(Unk3)); RelXml.ValueTag(sb, indent, "Unk3", FloatUtil.ToString(Unk3));
RelXml.StringTag(sb, indent, "AudioTrack2", RelXml.HashString(AudioTrack2)); RelXml.StringTag(sb, indent, "Mood", RelXml.HashString(Mood));
RelXml.ValueTag(sb, indent, "Unk4", FloatUtil.ToString(Unk4)); RelXml.ValueTag(sb, indent, "Unk4", FloatUtil.ToString(Unk4));
RelXml.ValueTag(sb, indent, "Unk5", Unk5.ToString()); RelXml.ValueTag(sb, indent, "Unk5", Unk5.ToString());
RelXml.ValueTag(sb, indent, "Unk6", Unk6.ToString()); RelXml.ValueTag(sb, indent, "Unk6", Unk6.ToString());
@ -7149,7 +7180,7 @@ namespace CodeWalker.GameFiles
AudioTrack0 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack0")); AudioTrack0 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack0"));
AudioTrack1 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack1")); AudioTrack1 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack1"));
Unk3 = Xml.GetChildFloatAttribute(node, "Unk3", "value"); Unk3 = Xml.GetChildFloatAttribute(node, "Unk3", "value");
AudioTrack2 = XmlRel.GetHash(Xml.GetChildInnerText(node, "AudioTrack2")); Mood = XmlRel.GetHash(Xml.GetChildInnerText(node, "Mood"));
Unk4 = Xml.GetChildFloatAttribute(node, "Unk4", "value"); Unk4 = Xml.GetChildFloatAttribute(node, "Unk4", "value");
Unk5 = Xml.GetChildIntAttribute(node, "Unk5", "value"); Unk5 = Xml.GetChildIntAttribute(node, "Unk5", "value");
Unk6 = Xml.GetChildIntAttribute(node, "Unk6", "value"); Unk6 = Xml.GetChildIntAttribute(node, "Unk6", "value");
@ -11664,12 +11695,12 @@ namespace CodeWalker.GameFiles
public byte Unk01 { get; set; } = 94; public byte Unk01 { get; set; } = 94;
public byte Unk02 { get; set; } = 57; public byte Unk02 { get; set; } = 57;
public byte Unk03 { get; set; } = 245; public byte Unk03 { get; set; } = 245;
public byte ItemCount1 { get; set; } public byte FullCount { get; set; }
public Dat151PedVoiceGroupItem[] Items1 { get; set; } public Dat151PedVoiceGroupItem[] Full { get; set; }
public byte ItemCount2 { get; set; } public byte MiniCount { get; set; }
public Dat151PedVoiceGroupItem[] Items2 { get; set; } public Dat151PedVoiceGroupItem[] Mini { get; set; }
public byte ItemCount3 { get; set; } public byte UnkItemsCount { get; set; }
public Dat151PedVoiceGroupItem[] Items3 { get; set; } public Dat151PedVoiceGroupItem[] UnkItems { get; set; }
public byte Unk07 { get; set; } //item count4? (=0) public byte Unk07 { get; set; } //item count4? (=0)
@ -11686,25 +11717,25 @@ namespace CodeWalker.GameFiles
Unk02 = br.ReadByte();//57 Unk02 = br.ReadByte();//57
Unk03 = br.ReadByte();//245 Unk03 = br.ReadByte();//245
ItemCount1 = br.ReadByte(); FullCount = br.ReadByte();
Items1 = new Dat151PedVoiceGroupItem[ItemCount1]; Full = new Dat151PedVoiceGroupItem[FullCount];
for (int i = 0; i < ItemCount1; i++) for (int i = 0; i < FullCount; i++)
{ {
Items1[i] = new Dat151PedVoiceGroupItem(br); Full[i] = new Dat151PedVoiceGroupItem(br);
} }
ItemCount2 = br.ReadByte(); MiniCount = br.ReadByte();
Items2 = new Dat151PedVoiceGroupItem[ItemCount2]; Mini = new Dat151PedVoiceGroupItem[MiniCount];
for (int i = 0; i < ItemCount2; i++) for (int i = 0; i < MiniCount; i++)
{ {
Items2[i] = new Dat151PedVoiceGroupItem(br); Mini[i] = new Dat151PedVoiceGroupItem(br);
} }
ItemCount3 = br.ReadByte(); UnkItemsCount = br.ReadByte();
Items3 = new Dat151PedVoiceGroupItem[ItemCount3]; UnkItems = new Dat151PedVoiceGroupItem[UnkItemsCount];
for (int i = 0; i < ItemCount3; i++) for (int i = 0; i < UnkItemsCount; i++)
{ {
Items3[i] = new Dat151PedVoiceGroupItem(br); UnkItems[i] = new Dat151PedVoiceGroupItem(br);
} }
Unk07 = br.ReadByte(); Unk07 = br.ReadByte();
@ -11733,20 +11764,20 @@ namespace CodeWalker.GameFiles
bw.Write(Unk01);//94 bw.Write(Unk01);//94
bw.Write(Unk02);//57 bw.Write(Unk02);//57
bw.Write(Unk03);//245 bw.Write(Unk03);//245
bw.Write(ItemCount1); bw.Write(FullCount);
for (int i = 0; i < ItemCount1; i++) for (int i = 0; i < FullCount; i++)
{ {
Items1[i].Write(bw); Full[i].Write(bw);
} }
bw.Write(ItemCount2); bw.Write(MiniCount);
for (int i = 0; i < ItemCount2; i++) for (int i = 0; i < MiniCount; i++)
{ {
Items2[i].Write(bw); Mini[i].Write(bw);
} }
bw.Write(ItemCount3); bw.Write(UnkItemsCount);
for (int i = 0; i < ItemCount3; i++) for (int i = 0; i < UnkItemsCount; i++)
{ {
Items3[i].Write(bw); UnkItems[i].Write(bw);
} }
bw.Write(Unk07); bw.Write(Unk07);
} }
@ -11756,9 +11787,9 @@ namespace CodeWalker.GameFiles
RelXml.ValueTag(sb, indent, "Unk01", Unk01.ToString()); RelXml.ValueTag(sb, indent, "Unk01", Unk01.ToString());
RelXml.ValueTag(sb, indent, "Unk02", Unk02.ToString()); RelXml.ValueTag(sb, indent, "Unk02", Unk02.ToString());
RelXml.ValueTag(sb, indent, "Unk03", Unk03.ToString()); RelXml.ValueTag(sb, indent, "Unk03", Unk03.ToString());
RelXml.WriteItemArray(sb, Items1, indent, "Items1"); RelXml.WriteItemArray(sb, Full, indent, "Full");
RelXml.WriteItemArray(sb, Items2, indent, "Items2"); RelXml.WriteItemArray(sb, Mini, indent, "Mini");
RelXml.WriteItemArray(sb, Items3, indent, "Items3"); RelXml.WriteItemArray(sb, UnkItems, indent, "UnkItems");
RelXml.ValueTag(sb, indent, "Unk07", Unk07.ToString()); RelXml.ValueTag(sb, indent, "Unk07", Unk07.ToString());
} }
public override void ReadXml(XmlNode node) public override void ReadXml(XmlNode node)
@ -11767,12 +11798,12 @@ namespace CodeWalker.GameFiles
Unk01 = (byte)Xml.GetChildUIntAttribute(node, "Unk01", "value"); Unk01 = (byte)Xml.GetChildUIntAttribute(node, "Unk01", "value");
Unk02 = (byte)Xml.GetChildUIntAttribute(node, "Unk02", "value"); Unk02 = (byte)Xml.GetChildUIntAttribute(node, "Unk02", "value");
Unk03 = (byte)Xml.GetChildUIntAttribute(node, "Unk03", "value"); Unk03 = (byte)Xml.GetChildUIntAttribute(node, "Unk03", "value");
Items1 = XmlRel.ReadItemArray<Dat151PedVoiceGroupItem>(node, "Items1"); Full = XmlRel.ReadItemArray<Dat151PedVoiceGroupItem>(node, "Full");
ItemCount1 = (byte)(Items1?.Length ?? 0); FullCount = (byte)(Full?.Length ?? 0);
Items2 = XmlRel.ReadItemArray<Dat151PedVoiceGroupItem>(node, "Items2"); Mini = XmlRel.ReadItemArray<Dat151PedVoiceGroupItem>(node, "Mini");
ItemCount2 = (byte)(Items2?.Length ?? 0); MiniCount = (byte)(Mini?.Length ?? 0);
Items3 = XmlRel.ReadItemArray<Dat151PedVoiceGroupItem>(node, "Items3"); UnkItems = XmlRel.ReadItemArray<Dat151PedVoiceGroupItem>(node, "UnkItems");
ItemCount3 = (byte)(Items3?.Length ?? 0); UnkItemsCount = (byte)(UnkItems?.Length ?? 0);
Unk07 = (byte)Xml.GetChildUIntAttribute(node, "Unk07", "value"); Unk07 = (byte)Xml.GetChildUIntAttribute(node, "Unk07", "value");
} }
} }
@ -15860,14 +15891,14 @@ namespace CodeWalker.GameFiles
} }
[TC(typeof(EXP))] public class Dat151StemMix : Dat151RelData [TC(typeof(EXP))] public class Dat151StemMix : Dat151RelData
{ {
public short Unk01 { get; set; } public short Stem1Volume { get; set; }
public short Unk02 { get; set; } public short Stem2Volume { get; set; }
public short Unk03 { get; set; } public short Stem3Volume { get; set; }
public short Unk04 { get; set; } public short Stem4Volume { get; set; }
public short Unk05 { get; set; } public short Stem5Volume { get; set; }
public short Unk06 { get; set; } public short Stem6Volume { get; set; }
public short Unk07 { get; set; } public short Stem7Volume { get; set; }
public short Unk08 { get; set; } public short Stem8Volume { get; set; }
public Dat151StemMix(RelFile rel) : base(rel) public Dat151StemMix(RelFile rel) : base(rel)
{ {
@ -15876,14 +15907,14 @@ namespace CodeWalker.GameFiles
} }
public Dat151StemMix(RelData d, BinaryReader br) : base(d, br) public Dat151StemMix(RelData d, BinaryReader br) : base(d, br)
{ {
Unk01 = br.ReadInt16(); Stem1Volume = br.ReadInt16();
Unk02 = br.ReadInt16(); Stem2Volume = br.ReadInt16();
Unk03 = br.ReadInt16(); Stem3Volume = br.ReadInt16();
Unk04 = br.ReadInt16(); Stem4Volume = br.ReadInt16();
Unk05 = br.ReadInt16(); Stem5Volume = br.ReadInt16();
Unk06 = br.ReadInt16(); Stem6Volume = br.ReadInt16();
Unk07 = br.ReadInt16(); Stem7Volume = br.ReadInt16();
Unk08 = br.ReadInt16(); Stem8Volume = br.ReadInt16();
var bytesleft = br.BaseStream.Length - br.BaseStream.Position; var bytesleft = br.BaseStream.Length - br.BaseStream.Position;
if (bytesleft != 0) if (bytesleft != 0)
@ -15893,36 +15924,36 @@ namespace CodeWalker.GameFiles
{ {
WriteTypeAndOffset(bw); WriteTypeAndOffset(bw);
bw.Write(Unk01); bw.Write(Stem1Volume);
bw.Write(Unk02); bw.Write(Stem2Volume);
bw.Write(Unk03); bw.Write(Stem3Volume);
bw.Write(Unk04); bw.Write(Stem4Volume);
bw.Write(Unk05); bw.Write(Stem5Volume);
bw.Write(Unk06); bw.Write(Stem6Volume);
bw.Write(Unk07); bw.Write(Stem7Volume);
bw.Write(Unk08); bw.Write(Stem8Volume);
} }
public override void WriteXml(StringBuilder sb, int indent) public override void WriteXml(StringBuilder sb, int indent)
{ {
RelXml.ValueTag(sb, indent, "Unk01", Unk01.ToString()); RelXml.ValueTag(sb, indent, "Stem1Volume", Stem1Volume.ToString());
RelXml.ValueTag(sb, indent, "Unk02", Unk02.ToString()); RelXml.ValueTag(sb, indent, "Stem2Volume", Stem2Volume.ToString());
RelXml.ValueTag(sb, indent, "Unk03", Unk03.ToString()); RelXml.ValueTag(sb, indent, "Stem3Volume", Stem3Volume.ToString());
RelXml.ValueTag(sb, indent, "Unk04", Unk04.ToString()); RelXml.ValueTag(sb, indent, "Stem4Volume", Stem4Volume.ToString());
RelXml.ValueTag(sb, indent, "Unk05", Unk05.ToString()); RelXml.ValueTag(sb, indent, "Stem5Volume", Stem5Volume.ToString());
RelXml.ValueTag(sb, indent, "Unk06", Unk06.ToString()); RelXml.ValueTag(sb, indent, "Stem6Volume", Stem6Volume.ToString());
RelXml.ValueTag(sb, indent, "Unk07", Unk07.ToString()); RelXml.ValueTag(sb, indent, "Stem7Volume", Stem7Volume.ToString());
RelXml.ValueTag(sb, indent, "Unk08", Unk08.ToString()); RelXml.ValueTag(sb, indent, "Stem8Volume", Stem8Volume.ToString());
} }
public override void ReadXml(XmlNode node) public override void ReadXml(XmlNode node)
{ {
Unk01 = (short)Xml.GetChildIntAttribute(node, "Unk01", "value"); Stem1Volume = (short)Xml.GetChildIntAttribute(node, "Stem1Volume", "value");
Unk02 = (short)Xml.GetChildIntAttribute(node, "Unk02", "value"); Stem2Volume = (short)Xml.GetChildIntAttribute(node, "Stem2Volume", "value");
Unk03 = (short)Xml.GetChildIntAttribute(node, "Unk03", "value"); Stem3Volume = (short)Xml.GetChildIntAttribute(node, "Stem3Volume", "value");
Unk04 = (short)Xml.GetChildIntAttribute(node, "Unk04", "value"); Stem4Volume = (short)Xml.GetChildIntAttribute(node, "Stem4Volume", "value");
Unk05 = (short)Xml.GetChildIntAttribute(node, "Unk05", "value"); Stem5Volume = (short)Xml.GetChildIntAttribute(node, "Stem5Volume", "value");
Unk06 = (short)Xml.GetChildIntAttribute(node, "Unk06", "value"); Stem6Volume = (short)Xml.GetChildIntAttribute(node, "Stem6Volume", "value");
Unk07 = (short)Xml.GetChildIntAttribute(node, "Unk07", "value"); Stem7Volume = (short)Xml.GetChildIntAttribute(node, "Stem7Volume", "value");
Unk08 = (short)Xml.GetChildIntAttribute(node, "Unk08", "value"); Stem8Volume = (short)Xml.GetChildIntAttribute(node, "Stem8Volume", "value");
} }
} }
[TC(typeof(EXP))] public class Dat151Unk69 : Dat151RelData [TC(typeof(EXP))] public class Dat151Unk69 : Dat151RelData
@ -21911,11 +21942,10 @@ namespace CodeWalker.GameFiles
[TC(typeof(EXP))] public class Dat15PatchItem : IMetaXmlItem [TC(typeof(EXP))] public class Dat15PatchItem : IMetaXmlItem
{ {
public MetaHash Unk01 { get; set; } public MetaHash Category { get; set; }
public short Unk02 { get; set; } public short Volume { get; set; }
public byte Unk03 { get; set; } public byte Unk03 { get; set; }
public byte Unk04 { get; set; } public short LPFCutoff { get; set; }
public byte Unk05 { get; set; }
public byte Unk06 { get; set; } public byte Unk06 { get; set; }
public short Unk07 { get; set; } public short Unk07 { get; set; }
public byte Unk08 { get; set; } public byte Unk08 { get; set; }
@ -21927,11 +21957,10 @@ namespace CodeWalker.GameFiles
{ } { }
public Dat15PatchItem(BinaryReader br) public Dat15PatchItem(BinaryReader br)
{ {
Unk01 = br.ReadUInt32(); Category = br.ReadUInt32();
Unk02 = br.ReadInt16(); Volume = br.ReadInt16();
Unk03 = br.ReadByte(); Unk03 = br.ReadByte();
Unk04 = br.ReadByte(); LPFCutoff = br.ReadInt16();
Unk05 = br.ReadByte();
Unk06 = br.ReadByte(); Unk06 = br.ReadByte();
Unk07 = br.ReadInt16(); Unk07 = br.ReadInt16();
Unk08 = br.ReadByte(); Unk08 = br.ReadByte();
@ -21941,11 +21970,10 @@ namespace CodeWalker.GameFiles
} }
public void Write(BinaryWriter bw) public void Write(BinaryWriter bw)
{ {
bw.Write(Unk01); bw.Write(Category);
bw.Write(Unk02); bw.Write(Volume);
bw.Write(Unk03); bw.Write(Unk03);
bw.Write(Unk04); bw.Write(LPFCutoff);
bw.Write(Unk05);
bw.Write(Unk06); bw.Write(Unk06);
bw.Write(Unk07); bw.Write(Unk07);
bw.Write(Unk08); bw.Write(Unk08);
@ -21955,11 +21983,10 @@ namespace CodeWalker.GameFiles
} }
public void WriteXml(StringBuilder sb, int indent) public void WriteXml(StringBuilder sb, int indent)
{ {
RelXml.StringTag(sb, indent, "Unk01", RelXml.HashString(Unk01)); RelXml.StringTag(sb, indent, "Category", RelXml.HashString(Category));
RelXml.ValueTag(sb, indent, "Unk02", Unk02.ToString()); RelXml.ValueTag(sb, indent, "Volume", Volume.ToString());
RelXml.ValueTag(sb, indent, "Unk03", Unk03.ToString()); RelXml.ValueTag(sb, indent, "Unk03", Unk03.ToString());
RelXml.ValueTag(sb, indent, "Unk04", Unk04.ToString()); RelXml.ValueTag(sb, indent, "LPFCutoff", LPFCutoff.ToString());
RelXml.ValueTag(sb, indent, "Unk05", Unk05.ToString());
RelXml.ValueTag(sb, indent, "Unk06", Unk06.ToString()); RelXml.ValueTag(sb, indent, "Unk06", Unk06.ToString());
RelXml.ValueTag(sb, indent, "Unk07", Unk07.ToString()); RelXml.ValueTag(sb, indent, "Unk07", Unk07.ToString());
RelXml.ValueTag(sb, indent, "Unk08", Unk08.ToString()); RelXml.ValueTag(sb, indent, "Unk08", Unk08.ToString());
@ -21969,11 +21996,10 @@ namespace CodeWalker.GameFiles
} }
public void ReadXml(XmlNode node) public void ReadXml(XmlNode node)
{ {
Unk01 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk01")); Category = XmlRel.GetHash(Xml.GetChildInnerText(node, "Category"));
Unk02 = (short)Xml.GetChildIntAttribute(node, "Unk02", "value"); Volume = (short)Xml.GetChildIntAttribute(node, "Volume", "value");
Unk03 = (byte)Xml.GetChildUIntAttribute(node, "Unk03", "value"); Unk03 = (byte)Xml.GetChildUIntAttribute(node, "Unk03", "value");
Unk04 = (byte)Xml.GetChildUIntAttribute(node, "Unk04", "value"); LPFCutoff = (short)Xml.GetChildUIntAttribute(node, "LPFCutoff", "value");
Unk05 = (byte)Xml.GetChildUIntAttribute(node, "Unk05", "value");
Unk06 = (byte)Xml.GetChildUIntAttribute(node, "Unk06", "value"); Unk06 = (byte)Xml.GetChildUIntAttribute(node, "Unk06", "value");
Unk07 = (short)Xml.GetChildIntAttribute(node, "Unk07", "value"); Unk07 = (short)Xml.GetChildIntAttribute(node, "Unk07", "value");
Unk08 = (byte)Xml.GetChildUIntAttribute(node, "Unk08", "value"); Unk08 = (byte)Xml.GetChildUIntAttribute(node, "Unk08", "value");
@ -21983,11 +22009,10 @@ namespace CodeWalker.GameFiles
} }
public override string ToString() public override string ToString()
{ {
return Unk01.ToString() + ": " + return Category.ToString() + ": " +
Unk02.ToString() + ", " + Volume.ToString() + ", " +
Unk03.ToString() + ", " + Unk03.ToString() + ", " +
Unk04.ToString() + ", " + LPFCutoff.ToString() + ", " +
Unk05.ToString() + ", " +
Unk06.ToString() + ", " + Unk06.ToString() + ", " +
Unk07.ToString() + ", " + Unk07.ToString() + ", " +
Unk08.ToString() + ", " + Unk08.ToString() + ", " +

View File

@ -67,10 +67,8 @@
this.Flags4TextBox = new System.Windows.Forms.TextBox(); this.Flags4TextBox = new System.Windows.Forms.TextBox();
this.label23 = new System.Windows.Forms.Label(); this.label23 = new System.Windows.Forms.Label();
this.Flags5TextBox = new System.Windows.Forms.TextBox(); this.Flags5TextBox = new System.Windows.Forms.TextBox();
this.Unk02UpDown = new System.Windows.Forms.NumericUpDown(); this.StartTimeUpDown = new System.Windows.Forms.NumericUpDown();
this.Unk03UpDown = new System.Windows.Forms.NumericUpDown(); this.EndTimeUpDown = new System.Windows.Forms.NumericUpDown();
this.Unk04UpDown = new System.Windows.Forms.NumericUpDown();
this.Unk05UpDown = new System.Windows.Forms.NumericUpDown();
this.Unk06UpDown = new System.Windows.Forms.NumericUpDown(); this.Unk06UpDown = new System.Windows.Forms.NumericUpDown();
this.Unk08UpDown = new System.Windows.Forms.NumericUpDown(); this.Unk08UpDown = new System.Windows.Forms.NumericUpDown();
this.Unk07UpDown = new System.Windows.Forms.NumericUpDown(); this.Unk07UpDown = new System.Windows.Forms.NumericUpDown();
@ -81,10 +79,8 @@
this.Unk13UpDown = new System.Windows.Forms.NumericUpDown(); this.Unk13UpDown = new System.Windows.Forms.NumericUpDown();
this.tabControl1.SuspendLayout(); this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout(); this.tabPage1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.Unk02UpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.StartTimeUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Unk03UpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.EndTimeUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Unk04UpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Unk05UpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Unk06UpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.Unk06UpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Unk08UpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.Unk08UpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Unk07UpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.Unk07UpDown)).BeginInit();
@ -128,10 +124,8 @@
this.tabPage1.Controls.Add(this.Unk07UpDown); this.tabPage1.Controls.Add(this.Unk07UpDown);
this.tabPage1.Controls.Add(this.Unk08UpDown); this.tabPage1.Controls.Add(this.Unk08UpDown);
this.tabPage1.Controls.Add(this.Unk06UpDown); this.tabPage1.Controls.Add(this.Unk06UpDown);
this.tabPage1.Controls.Add(this.Unk05UpDown); this.tabPage1.Controls.Add(this.EndTimeUpDown);
this.tabPage1.Controls.Add(this.Unk04UpDown); this.tabPage1.Controls.Add(this.StartTimeUpDown);
this.tabPage1.Controls.Add(this.Unk03UpDown);
this.tabPage1.Controls.Add(this.Unk02UpDown);
this.tabPage1.Controls.Add(this.label23); this.tabPage1.Controls.Add(this.label23);
this.tabPage1.Controls.Add(this.Flags5TextBox); this.tabPage1.Controls.Add(this.Flags5TextBox);
this.tabPage1.Controls.Add(this.label22); this.tabPage1.Controls.Add(this.label22);
@ -511,57 +505,31 @@
this.Flags5TextBox.TabIndex = 71; this.Flags5TextBox.TabIndex = 71;
this.Flags5TextBox.TextChanged += new System.EventHandler(this.Flags5TextBox_TextChanged); this.Flags5TextBox.TextChanged += new System.EventHandler(this.Flags5TextBox_TextChanged);
// //
// Unk02UpDown // StartTimeUpDown
// //
this.Unk02UpDown.Location = new System.Drawing.Point(84, 175); this.StartTimeUpDown.Location = new System.Drawing.Point(84, 175);
this.Unk02UpDown.Maximum = new decimal(new int[] { this.StartTimeUpDown.Maximum = new decimal(new int[] {
255, 255,
0, 0,
0, 0,
0}); 0});
this.Unk02UpDown.Name = "Unk02UpDown"; this.StartTimeUpDown.Name = "StartTimeUpDown";
this.Unk02UpDown.Size = new System.Drawing.Size(48, 20); this.StartTimeUpDown.Size = new System.Drawing.Size(48, 20);
this.Unk02UpDown.TabIndex = 44; this.StartTimeUpDown.TabIndex = 44;
this.Unk02UpDown.ValueChanged += new System.EventHandler(this.Unk02UpDown_ValueChanged); this.StartTimeUpDown.ValueChanged += new System.EventHandler(this.StartTimeUpDown_ValueChanged);
// //
// Unk03UpDown // EndTimeUpDown
// //
this.Unk03UpDown.Location = new System.Drawing.Point(138, 175); this.EndTimeUpDown.Location = new System.Drawing.Point(192, 175);
this.Unk03UpDown.Maximum = new decimal(new int[] { this.EndTimeUpDown.Maximum = new decimal(new int[] {
255, 255,
0, 0,
0, 0,
0}); 0});
this.Unk03UpDown.Name = "Unk03UpDown"; this.EndTimeUpDown.Name = "EndTimeUpDown";
this.Unk03UpDown.Size = new System.Drawing.Size(48, 20); this.EndTimeUpDown.Size = new System.Drawing.Size(48, 20);
this.Unk03UpDown.TabIndex = 45; this.EndTimeUpDown.TabIndex = 46;
this.Unk03UpDown.ValueChanged += new System.EventHandler(this.Unk03UpDown_ValueChanged); this.EndTimeUpDown.ValueChanged += new System.EventHandler(this.EndTimeUpDown_ValueChanged);
//
// Unk04UpDown
//
this.Unk04UpDown.Location = new System.Drawing.Point(192, 175);
this.Unk04UpDown.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.Unk04UpDown.Name = "Unk04UpDown";
this.Unk04UpDown.Size = new System.Drawing.Size(48, 20);
this.Unk04UpDown.TabIndex = 46;
this.Unk04UpDown.ValueChanged += new System.EventHandler(this.Unk04UpDown_ValueChanged);
//
// Unk05UpDown
//
this.Unk05UpDown.Location = new System.Drawing.Point(246, 175);
this.Unk05UpDown.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.Unk05UpDown.Name = "Unk05UpDown";
this.Unk05UpDown.Size = new System.Drawing.Size(48, 20);
this.Unk05UpDown.TabIndex = 47;
this.Unk05UpDown.ValueChanged += new System.EventHandler(this.Unk05UpDown_ValueChanged);
// //
// Unk06UpDown // Unk06UpDown
// //
@ -680,10 +648,8 @@
this.tabControl1.ResumeLayout(false); this.tabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false); this.tabPage1.ResumeLayout(false);
this.tabPage1.PerformLayout(); this.tabPage1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.Unk02UpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.StartTimeUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Unk03UpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.EndTimeUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Unk04UpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Unk05UpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Unk06UpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.Unk06UpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Unk08UpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.Unk08UpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Unk07UpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.Unk07UpDown)).EndInit();
@ -737,10 +703,8 @@
private System.Windows.Forms.Label label19; private System.Windows.Forms.Label label19;
private System.Windows.Forms.TextBox Flags3TextBox; private System.Windows.Forms.TextBox Flags3TextBox;
private System.Windows.Forms.NumericUpDown Unk06UpDown; private System.Windows.Forms.NumericUpDown Unk06UpDown;
private System.Windows.Forms.NumericUpDown Unk05UpDown; private System.Windows.Forms.NumericUpDown EndTimeUpDown;
private System.Windows.Forms.NumericUpDown Unk04UpDown; private System.Windows.Forms.NumericUpDown StartTimeUpDown;
private System.Windows.Forms.NumericUpDown Unk03UpDown;
private System.Windows.Forms.NumericUpDown Unk02UpDown;
private System.Windows.Forms.NumericUpDown Unk07UpDown; private System.Windows.Forms.NumericUpDown Unk07UpDown;
private System.Windows.Forms.NumericUpDown Unk08UpDown; private System.Windows.Forms.NumericUpDown Unk08UpDown;
private System.Windows.Forms.NumericUpDown Unk13UpDown; private System.Windows.Forms.NumericUpDown Unk13UpDown;

View File

@ -56,10 +56,8 @@ namespace CodeWalker.Project.Panels
Hash1TextBox.Text = string.Empty; Hash1TextBox.Text = string.Empty;
Hash2TextBox.Text = string.Empty; Hash2TextBox.Text = string.Empty;
Unk01TextBox.Text = string.Empty; Unk01TextBox.Text = string.Empty;
Unk02UpDown.Value = 0; StartTimeUpDown.Value = 0;
Unk03UpDown.Value = 0; EndTimeUpDown.Value = 0;
Unk04UpDown.Value = 0;
Unk05UpDown.Value = 0;
Unk06UpDown.Value = 0; Unk06UpDown.Value = 0;
Unk07UpDown.Value = 0; Unk07UpDown.Value = 0;
Unk08UpDown.Value = 0; Unk08UpDown.Value = 0;
@ -91,10 +89,8 @@ namespace CodeWalker.Project.Panels
Hash1TextBox.Text = e.Hash1.ToString(); Hash1TextBox.Text = e.Hash1.ToString();
Hash2TextBox.Text = e.Hash2.ToString(); Hash2TextBox.Text = e.Hash2.ToString();
Unk01TextBox.Text = FloatUtil.ToString(e.Unk01); Unk01TextBox.Text = FloatUtil.ToString(e.Unk01);
Unk02UpDown.Value = e.Unk02.Value; StartTimeUpDown.Value = e.StartTime.Value;
Unk03UpDown.Value = e.Unk03.Value; EndTimeUpDown.Value = e.EndTime.Value;
Unk04UpDown.Value = e.Unk04.Value;
Unk05UpDown.Value = e.Unk05.Value;
Unk06UpDown.Value = e.Unk06.Value; Unk06UpDown.Value = e.Unk06.Value;
Unk07UpDown.Value = e.Unk07.Value; Unk07UpDown.Value = e.Unk07.Value;
Unk08UpDown.Value = e.Unk08.Value; Unk08UpDown.Value = e.Unk08.Value;
@ -279,57 +275,29 @@ namespace CodeWalker.Project.Panels
} }
} }
private void Unk02UpDown_ValueChanged(object sender, EventArgs e) private void StartTimeUpDown_ValueChanged(object sender, EventArgs e)
{ {
if (populatingui) return; if (populatingui) return;
if (CurrentEmitter?.AudioEmitter == null) return; if (CurrentEmitter?.AudioEmitter == null) return;
byte unk = (byte)Unk02UpDown.Value; ushort unk = (ushort)StartTimeUpDown.Value;
if (CurrentEmitter.AudioEmitter.Unk02.Value != unk) if (CurrentEmitter.AudioEmitter.StartTime.Value != unk)
{ {
CurrentEmitter.AudioEmitter.Unk02 = unk; CurrentEmitter.AudioEmitter.StartTime = unk;
ProjectItemChanged(); ProjectItemChanged();
} }
} }
private void Unk03UpDown_ValueChanged(object sender, EventArgs e) private void EndTimeUpDown_ValueChanged(object sender, EventArgs e)
{ {
if (populatingui) return; if (populatingui) return;
if (CurrentEmitter?.AudioEmitter == null) return; if (CurrentEmitter?.AudioEmitter == null) return;
byte unk = (byte)Unk03UpDown.Value; ushort unk = (ushort)EndTimeUpDown.Value;
if (CurrentEmitter.AudioEmitter.Unk03.Value != unk) if (CurrentEmitter.AudioEmitter.EndTime.Value != unk)
{ {
CurrentEmitter.AudioEmitter.Unk03 = unk; CurrentEmitter.AudioEmitter.EndTime = unk;
ProjectItemChanged();
}
}
private void Unk04UpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (CurrentEmitter?.AudioEmitter == null) return;
byte unk = (byte)Unk04UpDown.Value;
if (CurrentEmitter.AudioEmitter.Unk04.Value != unk)
{
CurrentEmitter.AudioEmitter.Unk04 = unk;
ProjectItemChanged();
}
}
private void Unk05UpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (CurrentEmitter?.AudioEmitter == null) return;
byte unk = (byte)Unk05UpDown.Value;
if (CurrentEmitter.AudioEmitter.Unk05.Value != unk)
{
CurrentEmitter.AudioEmitter.Unk05 = unk;
ProjectItemChanged(); ProjectItemChanged();
} }

View File

@ -6553,10 +6553,8 @@ namespace CodeWalker.Project
emitter.InnerRad = cp ? copy.AudioEmitter.InnerRad : 0.0f; emitter.InnerRad = cp ? copy.AudioEmitter.InnerRad : 0.0f;
emitter.OuterRad = cp ? copy.AudioEmitter.OuterRad : 20.0f; emitter.OuterRad = cp ? copy.AudioEmitter.OuterRad : 20.0f;
emitter.Unk01 = cp ? copy.AudioEmitter.Unk01 : 1.0f; emitter.Unk01 = cp ? copy.AudioEmitter.Unk01 : 1.0f;
emitter.Unk02 = cp ? copy.AudioEmitter.Unk02.Value : (byte)0; emitter.StartTime = cp ? copy.AudioEmitter.StartTime.Value : (ushort)0;
emitter.Unk03 = cp ? copy.AudioEmitter.Unk03.Value : (byte)0; emitter.EndTime = cp ? copy.AudioEmitter.EndTime.Value : (ushort)1440;
emitter.Unk04 = cp ? copy.AudioEmitter.Unk04.Value : (byte)160;
emitter.Unk05 = cp ? copy.AudioEmitter.Unk05.Value : (byte)5;
emitter.Unk06 = cp ? copy.AudioEmitter.Unk06.Value : (ushort)0; emitter.Unk06 = cp ? copy.AudioEmitter.Unk06.Value : (ushort)0;
emitter.Unk07 = cp ? copy.AudioEmitter.Unk07.Value : (ushort)0; emitter.Unk07 = cp ? copy.AudioEmitter.Unk07.Value : (ushort)0;
emitter.Unk08 = cp ? copy.AudioEmitter.Unk08.Value : (byte)0; emitter.Unk08 = cp ? copy.AudioEmitter.Unk08.Value : (byte)0;