Update ymap flags and more audio stuff

This commit is contained in:
ook3d 2023-12-26 17:56:06 -05:00
parent 7c3dd49aaa
commit 2fedfc35c9
4 changed files with 449 additions and 572 deletions

View File

@ -1,15 +1,13 @@
using System; using SharpDX;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Security.Cryptography;
using System.Text; using System.Text;
using System.Threading.Tasks;
using TC = System.ComponentModel.TypeConverterAttribute;
using EXP = System.ComponentModel.ExpandableObjectConverter;
using SharpDX;
using System.Xml; using System.Xml;
using System.Text.RegularExpressions; using EXP = System.ComponentModel.ExpandableObjectConverter;
using TC = System.ComponentModel.TypeConverterAttribute;
@ -6114,22 +6112,26 @@ namespace CodeWalker.GameFiles
} }
[TC(typeof(EXP))] public class Dat151InteriorRoom : Dat151RelData [TC(typeof(EXP))] public class Dat151InteriorRoom : Dat151RelData
{ {
public FlagsUint Flags0 { get; set; } public FlagsUint Flags { get; set; }
public MetaHash MloRoom { get; set; } public MetaHash RoomName { get; set; }
public MetaHash Zone { get; set; } public MetaHash AmbientZone { get; set; }
public uint Unk02 { get; set; } public byte InteriorType { get; set; }
public float Unk03 { get; set; } public ushort padding00 { get; set; }
public float Reverb { get; set; } public byte padding01 { get; set; }
public float Echo { get; set; } public float ReverbSmall { get; set; }
public float ReverbMedium { get; set; }
public float ReverbLarge { get; set; }
public MetaHash Sound { get; set; } public MetaHash Sound { get; set; }
public float Unk07 { get; set; } public byte RainType { get; set; }
public float Unk08 { get; set; } public ushort padding03 { get; set; }
public float Unk09 { get; set; } public byte padding04 { get; set; }
public float Unk10 { get; set; } public float ExteriorAudibility { get; set; }
public float Unk11 { get; set; } public float RoomOcclusionDamping { get; set; }
public float Unk12 { get; set; } public float NonMarkedPortalOcclusion { get; set; }
public MetaHash Unk13 { get; set; } public float DistanceFromPortalForOcclusion { get; set; }
public MetaHash SoundSet { get; set; } public float DistanceFromPortalFadeDistance { get; set; }
public MetaHash WeaponMetrics { get; set; }
public MetaHash InteriorWallaSoundSet { get; set; }
public Dat151InteriorRoom(RelFile rel) : base(rel) public Dat151InteriorRoom(RelFile rel) : base(rel)
{ {
@ -6138,22 +6140,26 @@ namespace CodeWalker.GameFiles
} }
public Dat151InteriorRoom(RelData d, BinaryReader br) : base(d, br) public Dat151InteriorRoom(RelData d, BinaryReader br) : base(d, br)
{ {
Flags0 = br.ReadUInt32(); Flags = br.ReadUInt32();
MloRoom = br.ReadUInt32(); RoomName = br.ReadUInt32();
Zone = br.ReadUInt32(); AmbientZone = br.ReadUInt32();
Unk02 = br.ReadUInt32(); InteriorType = br.ReadByte();
Unk03 = br.ReadSingle(); padding00 = br.ReadUInt16();
Reverb = br.ReadSingle(); padding01 = br.ReadByte();
Echo = br.ReadSingle(); ReverbSmall = br.ReadSingle();
ReverbMedium = br.ReadSingle();
ReverbLarge = br.ReadSingle();
Sound = br.ReadUInt32(); Sound = br.ReadUInt32();
Unk07 = br.ReadSingle(); RainType = br.ReadByte();
Unk08 = br.ReadSingle(); padding03 = br.ReadUInt16();
Unk09 = br.ReadSingle(); padding04 = br.ReadByte();
Unk10 = br.ReadSingle(); ExteriorAudibility = br.ReadSingle();
Unk11 = br.ReadSingle(); RoomOcclusionDamping = br.ReadSingle();
Unk12 = br.ReadSingle(); NonMarkedPortalOcclusion = br.ReadSingle();
Unk13 = br.ReadUInt32(); DistanceFromPortalForOcclusion = br.ReadSingle();
SoundSet = br.ReadUInt32(); DistanceFromPortalFadeDistance = br.ReadSingle();
WeaponMetrics = br.ReadUInt32();
InteriorWallaSoundSet = br.ReadUInt32();
var bytesleft = br.BaseStream.Length - br.BaseStream.Position; var bytesleft = br.BaseStream.Length - br.BaseStream.Position;
if (bytesleft != 0) if (bytesleft != 0)
@ -6163,60 +6169,64 @@ namespace CodeWalker.GameFiles
{ {
WriteTypeAndOffset(bw); WriteTypeAndOffset(bw);
bw.Write(Flags0); bw.Write(Flags);
bw.Write(MloRoom); bw.Write(RoomName);
bw.Write(Zone); bw.Write(AmbientZone);
bw.Write(Unk02); bw.Write(InteriorType);
bw.Write(Unk03); bw.Write(padding00);
bw.Write(Reverb); bw.Write(padding01);
bw.Write(Echo); bw.Write(ReverbSmall);
bw.Write(ReverbMedium);
bw.Write(ReverbLarge);
bw.Write(Sound); bw.Write(Sound);
bw.Write(Unk07); bw.Write(RainType);
bw.Write(Unk08); bw.Write(padding03);
bw.Write(Unk09); bw.Write(padding04);
bw.Write(Unk10); bw.Write(ExteriorAudibility);
bw.Write(Unk11); bw.Write(RoomOcclusionDamping);
bw.Write(Unk12); bw.Write(NonMarkedPortalOcclusion);
bw.Write(Unk13); bw.Write(DistanceFromPortalForOcclusion);
bw.Write(SoundSet); bw.Write(DistanceFromPortalFadeDistance);
bw.Write(WeaponMetrics);
bw.Write(InteriorWallaSoundSet);
} }
public override void WriteXml(StringBuilder sb, int indent) public override void WriteXml(StringBuilder sb, int indent)
{ {
RelXml.ValueTag(sb, indent, "Flags0", "0x" + Flags0.Hex); RelXml.ValueTag(sb, indent, "Flags", "0x" + Flags.Hex);
RelXml.StringTag(sb, indent, "MloRoom", RelXml.HashString(MloRoom)); RelXml.StringTag(sb, indent, "RoomName", RelXml.HashString(RoomName));
RelXml.StringTag(sb, indent, "Zone", RelXml.HashString(Zone)); RelXml.StringTag(sb, indent, "AmbientZone", RelXml.HashString(AmbientZone));
RelXml.ValueTag(sb, indent, "Unk02", Unk02.ToString()); RelXml.ValueTag(sb, indent, "InteriorType", FloatUtil.ToString(InteriorType));
RelXml.ValueTag(sb, indent, "Unk03", FloatUtil.ToString(Unk03)); RelXml.ValueTag(sb, indent, "ReverbSmall", FloatUtil.ToString(ReverbSmall));
RelXml.ValueTag(sb, indent, "Reverb", FloatUtil.ToString(Reverb)); RelXml.ValueTag(sb, indent, "ReverbMedium", FloatUtil.ToString(ReverbMedium));
RelXml.ValueTag(sb, indent, "Echo", FloatUtil.ToString(Echo)); RelXml.ValueTag(sb, indent, "ReverbLarge", FloatUtil.ToString(ReverbLarge));
RelXml.StringTag(sb, indent, "Sound", RelXml.HashString(Sound)); RelXml.StringTag(sb, indent, "Sound", RelXml.HashString(Sound));
RelXml.ValueTag(sb, indent, "Unk07", FloatUtil.ToString(Unk07)); RelXml.ValueTag(sb, indent, "RainType", FloatUtil.ToString(RainType));
RelXml.ValueTag(sb, indent, "Unk08", FloatUtil.ToString(Unk08)); RelXml.ValueTag(sb, indent, "ExteriorAudibility", FloatUtil.ToString(ExteriorAudibility));
RelXml.ValueTag(sb, indent, "Unk09", FloatUtil.ToString(Unk09)); RelXml.ValueTag(sb, indent, "RoomOcclusionDamping", FloatUtil.ToString(RoomOcclusionDamping));
RelXml.ValueTag(sb, indent, "Unk10", FloatUtil.ToString(Unk10)); RelXml.ValueTag(sb, indent, "NonMarkedPortalOcclusion", FloatUtil.ToString(NonMarkedPortalOcclusion));
RelXml.ValueTag(sb, indent, "Unk11", FloatUtil.ToString(Unk11)); RelXml.ValueTag(sb, indent, "DistanceFromPortalForOcclusion", FloatUtil.ToString(DistanceFromPortalForOcclusion));
RelXml.ValueTag(sb, indent, "Unk12", FloatUtil.ToString(Unk12)); RelXml.ValueTag(sb, indent, "DistanceFromPortalFadeDistance", FloatUtil.ToString(DistanceFromPortalFadeDistance));
RelXml.StringTag(sb, indent, "Unk13", RelXml.HashString(Unk13)); RelXml.StringTag(sb, indent, "WeaponMetrics", RelXml.HashString(WeaponMetrics));
RelXml.StringTag(sb, indent, "SoundSet", RelXml.HashString(SoundSet)); RelXml.StringTag(sb, indent, "InteriorWallaSoundSet", RelXml.HashString(InteriorWallaSoundSet));
} }
public override void ReadXml(XmlNode node) public override void ReadXml(XmlNode node)
{ {
Flags0 = Xml.GetChildUIntAttribute(node, "Flags0", "value"); Flags = Xml.GetChildUIntAttribute(node, "Flags", "value");
MloRoom = XmlRel.GetHash(Xml.GetChildInnerText(node, "MloRoom")); RoomName = XmlRel.GetHash(Xml.GetChildInnerText(node, "RoomName"));
Zone = XmlRel.GetHash(Xml.GetChildInnerText(node, "Zone")); AmbientZone = XmlRel.GetHash(Xml.GetChildInnerText(node, "AmbientZone"));
Unk02 = Xml.GetChildUIntAttribute(node, "Unk02", "value"); InteriorType = (byte)Xml.GetChildUIntAttribute(node, "InteriorType", "value");
Unk03 = Xml.GetChildFloatAttribute(node, "Unk03", "value"); ReverbSmall = Xml.GetChildFloatAttribute(node, "ReverbSmall", "value");
Reverb = Xml.GetChildFloatAttribute(node, "Reverb", "value"); ReverbMedium = Xml.GetChildFloatAttribute(node, "ReverbMedium", "value");
Echo = Xml.GetChildFloatAttribute(node, "Echo", "value"); ReverbLarge = Xml.GetChildFloatAttribute(node, "ReverbLarge", "value");
Sound = XmlRel.GetHash(Xml.GetChildInnerText(node, "Sound")); Sound = XmlRel.GetHash(Xml.GetChildInnerText(node, "Sound"));
Unk07 = Xml.GetChildFloatAttribute(node, "Unk07", "value"); RainType = (byte)Xml.GetChildUIntAttribute(node, "RainType", "value");
Unk08 = Xml.GetChildFloatAttribute(node, "Unk08", "value"); ExteriorAudibility = Xml.GetChildFloatAttribute(node, "ExteriorAudibility", "value");
Unk09 = Xml.GetChildFloatAttribute(node, "Unk09", "value"); RoomOcclusionDamping = Xml.GetChildFloatAttribute(node, "RoomOcclusionDamping", "value");
Unk10 = Xml.GetChildFloatAttribute(node, "Unk10", "value"); NonMarkedPortalOcclusion = Xml.GetChildFloatAttribute(node, "NonMarkedPortalOcclusion", "value");
Unk11 = Xml.GetChildFloatAttribute(node, "Unk11", "value"); DistanceFromPortalForOcclusion = Xml.GetChildFloatAttribute(node, "DistanceFromPortalForOcclusion", "value");
Unk12 = Xml.GetChildFloatAttribute(node, "Unk12", "value"); DistanceFromPortalFadeDistance = Xml.GetChildFloatAttribute(node, "DistanceFromPortalFadeDistance", "value");
Unk13 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk13")); WeaponMetrics = XmlRel.GetHash(Xml.GetChildInnerText(node, "WeaponMetrics"));
SoundSet = XmlRel.GetHash(Xml.GetChildInnerText(node, "SoundSet")); InteriorWallaSoundSet = XmlRel.GetHash(Xml.GetChildInnerText(node, "InteriorWallaSoundSet"));
} }
public override uint[] GetHashTableOffsets() public override uint[] GetHashTableOffsets()
{ {
@ -6224,11 +6234,11 @@ namespace CodeWalker.GameFiles
} }
public override MetaHash[] GetSoundHashes() public override MetaHash[] GetSoundHashes()
{ {
return new[] { Sound, SoundSet }; return new[] { Sound, InteriorWallaSoundSet };
} }
public override MetaHash[] GetGameHashes() public override MetaHash[] GetGameHashes()
{ {
return new[] { Zone, Unk13 }; return new[] { AmbientZone, WeaponMetrics };
} }
} }
[TC(typeof(EXP))] public class Dat151RadioStationList : Dat151RelData [TC(typeof(EXP))] public class Dat151RadioStationList : Dat151RelData
@ -10252,64 +10262,66 @@ namespace CodeWalker.GameFiles
{ {
public FlagsUint Flags { get; set; } public FlagsUint Flags { get; set; }
public int MasterVolume { get; set; } public int MasterVolume { get; set; }
public MetaHash EngineAccel { get; set; } public uint EngineAccel { get; set; }
public MetaHash ExhaustAccel { get; set; } public uint ExhaustAccel { get; set; }
public int Unk04 { get; set; } public MetaHash EngineVolume_PreSubmix { get; set; }
public int Unk05 { get; set; } public MetaHash ExhaustVolume_PreSubmix { get; set; }
public int Unk06 { get; set; } public MetaHash AccelVolume_PreSubmix { get; set; }
public int Unk07 { get; set; } public MetaHash DecelVolume_PreSubmix { get; set; }
public int Unk08 { get; set; } public MetaHash IdleVolume_PreSubmix { get; set; }
public int Unk09 { get; set; } public MetaHash EngineRevsVolume_PreSubmix { get; set; }
public int Unk10 { get; set; } public MetaHash ExhaustRevsVolume_PreSubmix { get; set; }
public int Unk11 { get; set; } public MetaHash EngineThrottleVolume_PreSubmix { get; set; }
public int Unk12 { get; set; } public MetaHash ExhaustThrottleVolume_PreSubmix { get; set; }
public int EngineVolume { get; set; } public MetaHash EngineVolume_PostSubmix { get; set; }
public int ExhaustVolume { get; set; } public MetaHash ExhaustVolume_PostSubmix { get; set; }
public int EngineIdleVolume { get; set; } public int EngineMaxConeAttenuation { get; set; }
public int ExhaustIdleVolume { get; set; } public int ExhaustMaxConeAttenuation { get; set; }
public int Unk17 { get; set; } public MetaHash EngineRevsVolume_PostSubmix { get; set; }
public int Unk18 { get; set; } public MetaHash ExhaustRevsVolume_PostSubmix { get; set; }
public int EngineAccelVolume { get; set; } public MetaHash EngineThrottleVolume_PostSubmix { get; set; }
public int ExhaustAccelVolume { get; set; } public MetaHash ExhaustThrottleVolume_PostSubmix { get; set; }
public int Unk21 { get; set; } public uint GearChangeWobbleLength { get; set; }
public float Unk22 { get; set; } public float GearChangeWobbleLengthVariance { get; set; }
public float Unk23 { get; set; } public float GearChangeWobbleSpeed { get; set; }
public float Unk24 { get; set; } public float GearChangeWobbleSpeedVariance { get; set; }
public float Unk25 { get; set; } public float GearChangeWobblePitch { get; set; }
public float Unk26 { get; set; } public float GearChangeWobblePitchVariance { get; set; }
public float Unk27 { get; set; } public float GearChangeWobbleVolume { get; set; }
public float Unk28 { get; set; } public float GearChangeWobbleVolumeVariance { get; set; }
public int Unk29 { get; set; } public MetaHash EngineClutchAttenuation_PostSubmix { get; set; }
public int Unk30 { get; set; } public MetaHash ExhaustClutchAttenuation_PostSubmix { get; set; }
public MetaHash EngineSubmix { get; set; } public uint EngineSynthDef { get; set; }
public MetaHash EngineSubmixPreset { get; set; } public uint EngineSynthPreset { get; set; }
public MetaHash ExhaustSubmix { get; set; } public uint ExhaustSynthDef { get; set; }
public MetaHash ExhaustSubmixPreset { get; set; } public uint ExhaustSynthPreset { get; set; }
public MetaHash EngineAccelNPC { get; set; } public uint NPCEngineAccel { get; set; }
public MetaHash ExhaustAccelNPC { get; set; } public uint NPCExhaustAccel { get; set; }
public MetaHash LimiterPops { get; set; } public uint RevLimiterPopSound { get; set; }
public int Unk38 { get; set; } public uint MinRPMOverride { get; set; }
public int Unk39 { get; set; } public uint MaxRPMOverride { get; set; }
public MetaHash Unk40 { get; set; } public MetaHash EngineSubmixVoice { get; set; }
public MetaHash Unk41 { get; set; } public MetaHash ExhaustSubmixVoice { get; set; }
public int Unk42 { get; set; } public MetaHash ExhaustProximityVolume_PostSubmix { get; set; }
public int Unk43 { get; set; } public uint RevLimiterGrainsToPlay { get; set; }
public int Unk44 { get; set; } public uint RevLimiterGrainsToSkip { get; set; }
public MetaHash IdleSub { get; set; } public uint SynchronisedSynth { get; set; }
public int Unk46 { get; set; } public MetaHash UpgradedEngineVolumeBoost_PostSubmix { get; set; }
public int Unk47 { get; set; } public uint UpgradedEngineSynthDef { get; set; }
public int Unk48 { get; set; } public uint UpgradedEngineSynthPreset { get; set; }
public int Unk49 { get; set; } public MetaHash UpgradedExhaustVolumeBoost_PostSubmix { get; set; }
public MetaHash Unk50 { get; set; } public uint UpgradedExhaustSynthDef { get; set; }
public MetaHash Unk51 { get; set; } public uint UpgradedExhaustSynthPreset { get; set; }
public MetaHash EngineDamage { get; set; } public uint DamageSynthHashList { get; set; }
public MetaHash LimiterPopsUpgraded { get; set; } public uint UpgradedRevLimiterPop { get; set; }
public int Unk54 { get; set; } public MetaHash EngineIdleVolume_PostSubmix { get; set; }
public int Unk55 { get; set; } public MetaHash ExhaustIdleVolume_PostSubmix { get; set; }
public int Unk56 { get; set; } public MetaHash StartupRevsVolumeBoostEngine_PostSubmix { get; set; }
public int Unk57 { get; set; } public MetaHash StartupRevsVolumeBoostExhaust_PostSubmix { get; set; }
public int Unk58 { get; set; }//OPTIONAL!? only include this and next if either nonzero? public byte RevLimiterApplyType { get; set; }
public float Unk59 { get; set; }//OPTIONAL!? public ushort padding00 { get; set; }
public byte padding01 { get; set; }
public float RevLimiterVolumeCut { get; set; }
public Dat151VehicleEngineGranular(RelFile rel) : base(rel) public Dat151VehicleEngineGranular(RelFile rel) : base(rel)
{ {
@ -10322,167 +10334,64 @@ namespace CodeWalker.GameFiles
MasterVolume = br.ReadInt32(); MasterVolume = br.ReadInt32();
EngineAccel = br.ReadUInt32(); EngineAccel = br.ReadUInt32();
ExhaustAccel = br.ReadUInt32(); ExhaustAccel = br.ReadUInt32();
Unk04 = br.ReadInt32(); EngineVolume_PreSubmix = br.ReadUInt32();
Unk05 = br.ReadInt32(); ExhaustVolume_PreSubmix = br.ReadUInt32();
Unk06 = br.ReadInt32(); AccelVolume_PreSubmix = br.ReadUInt32();
Unk07 = br.ReadInt32(); DecelVolume_PreSubmix = br.ReadUInt32();
Unk08 = br.ReadInt32(); IdleVolume_PreSubmix = br.ReadUInt32();
Unk09 = br.ReadInt32(); EngineRevsVolume_PreSubmix = br.ReadUInt32();
Unk10 = br.ReadInt32(); ExhaustRevsVolume_PreSubmix = br.ReadUInt32();
Unk11 = br.ReadInt32(); EngineThrottleVolume_PreSubmix = br.ReadUInt32();
Unk12 = br.ReadInt32(); ExhaustThrottleVolume_PreSubmix = br.ReadUInt32();
EngineVolume = br.ReadInt32(); EngineVolume_PostSubmix = br.ReadUInt32();
ExhaustVolume = br.ReadInt32(); ExhaustVolume_PostSubmix = br.ReadUInt32();
EngineIdleVolume = br.ReadInt32(); EngineMaxConeAttenuation = br.ReadInt32();
ExhaustIdleVolume = br.ReadInt32(); ExhaustMaxConeAttenuation = br.ReadInt32();
Unk17 = br.ReadInt32(); EngineRevsVolume_PostSubmix = br.ReadUInt32();
Unk18 = br.ReadInt32(); ExhaustRevsVolume_PostSubmix = br.ReadUInt32();
EngineAccelVolume = br.ReadInt32(); EngineThrottleVolume_PostSubmix = br.ReadUInt32();
ExhaustAccelVolume = br.ReadInt32(); ExhaustThrottleVolume_PostSubmix = br.ReadUInt32();
Unk21 = br.ReadInt32(); GearChangeWobbleLength = br.ReadUInt32();
Unk22 = br.ReadSingle(); GearChangeWobbleLengthVariance = br.ReadSingle();
Unk23 = br.ReadSingle(); GearChangeWobbleSpeed = br.ReadSingle();
Unk24 = br.ReadSingle(); GearChangeWobbleSpeedVariance = br.ReadSingle();
Unk25 = br.ReadSingle(); GearChangeWobblePitch = br.ReadSingle();
Unk26 = br.ReadSingle(); GearChangeWobblePitchVariance = br.ReadSingle();
Unk27 = br.ReadSingle(); GearChangeWobbleVolume = br.ReadSingle();
Unk28 = br.ReadSingle(); GearChangeWobbleVolumeVariance = br.ReadSingle();
Unk29 = br.ReadInt32(); EngineClutchAttenuation_PostSubmix = br.ReadUInt32();
Unk30 = br.ReadInt32(); ExhaustClutchAttenuation_PostSubmix = br.ReadUInt32();
EngineSubmix = br.ReadUInt32(); EngineSynthDef = br.ReadUInt32();
EngineSubmixPreset = br.ReadUInt32(); EngineSynthPreset = br.ReadUInt32();
ExhaustSubmix = br.ReadUInt32(); ExhaustSynthDef = br.ReadUInt32();
ExhaustSubmixPreset = br.ReadUInt32(); ExhaustSynthPreset = br.ReadUInt32();
EngineAccelNPC = br.ReadUInt32(); NPCEngineAccel = br.ReadUInt32();
ExhaustAccelNPC = br.ReadUInt32(); NPCExhaustAccel = br.ReadUInt32();
LimiterPops = br.ReadUInt32(); RevLimiterPopSound = br.ReadUInt32();
Unk38 = br.ReadInt32(); MinRPMOverride = br.ReadUInt32();
Unk39 = br.ReadInt32(); MaxRPMOverride = br.ReadUInt32();
Unk40 = br.ReadUInt32(); EngineSubmixVoice = br.ReadUInt32();
Unk41 = br.ReadUInt32(); ExhaustSubmixVoice = br.ReadUInt32();
Unk42 = br.ReadInt32(); ExhaustProximityVolume_PostSubmix = br.ReadUInt32();
Unk43 = br.ReadInt32(); RevLimiterGrainsToPlay = br.ReadUInt32();
Unk44 = br.ReadInt32(); RevLimiterGrainsToSkip = br.ReadUInt32();
IdleSub = br.ReadUInt32(); SynchronisedSynth = br.ReadUInt32();
Unk46 = br.ReadInt32(); UpgradedEngineVolumeBoost_PostSubmix = br.ReadUInt32();
Unk47 = br.ReadInt32(); UpgradedEngineSynthDef = br.ReadUInt32();
Unk48 = br.ReadInt32(); UpgradedEngineSynthPreset = br.ReadUInt32();
Unk49 = br.ReadInt32(); UpgradedExhaustVolumeBoost_PostSubmix = br.ReadUInt32();
Unk50 = br.ReadUInt32(); UpgradedExhaustSynthDef = br.ReadUInt32();
Unk51 = br.ReadUInt32(); UpgradedExhaustSynthPreset = br.ReadUInt32();
EngineDamage = br.ReadUInt32(); DamageSynthHashList = br.ReadUInt32();
LimiterPopsUpgraded = br.ReadUInt32(); UpgradedRevLimiterPop = br.ReadUInt32();
Unk54 = br.ReadInt32(); EngineIdleVolume_PostSubmix = br.ReadUInt32();
Unk55 = br.ReadInt32(); ExhaustIdleVolume_PostSubmix = br.ReadUInt32();
Unk56 = br.ReadInt32(); StartupRevsVolumeBoostEngine_PostSubmix = br.ReadUInt32();
Unk57 = br.ReadInt32(); StartupRevsVolumeBoostExhaust_PostSubmix = br.ReadUInt32();
RevLimiterApplyType = br.ReadByte();
padding00 = br.ReadUInt16();
padding01 = br.ReadByte();
switch (this.Flags) RevLimiterVolumeCut = br.ReadSingle();
{
case 0xAAAAA905:
case 0xAAAAA955:
case 0xAAAAA954:
case 0xAAAAA914:
case 0xAAAAA904:
case 0xAAAAA805:
case 0xAAAAA915:
case 0xAAAAA945:
case 0xAAAAA815:
case 0xAAAAA944:
case 0xAAAAA854:
break;
default:
break;
}
switch (this.Unk40)
{
case 1225003942:
break;
default:
break;
}
switch (this.Unk41)
{
case 1479769906:
break;
default:
break;
}
switch (this.Unk43)
{
case 5:
case 3:
case 4:
case 2:
case 6:
case 1:
break;
default:
break;
}
switch (this.Unk44)
{
case 2:
case 1:
case 3:
case 4:
break;
default:
break;
}
var bytesleft = br.BaseStream.Length - br.BaseStream.Position;
switch (bytesleft) //any other way to tell??
{
case 0:
break;
case 8:
Unk58 = br.ReadInt32();
Unk59 = br.ReadSingle();
switch (Unk58)
{
case 1:
case 2:
case 0:
break;
default:
break;//no hit here
}
if ((Unk58 == 0) && (Unk59 == 0))
{ }//no hit here
break;
default:
break;//no hit here
}
if (bytesleft != 0)
{ }
if (Unk04 != 0)
{ }
if (Unk09 != 0)
{ }
if (Unk10 != 0)
{ }
if (Unk11 != 0)
{ }
if (Unk12 != 0)
{ }
if (Unk38 != 0)
{ }
if (Unk39 != 0)
{ }
if (Unk47 != 0)
{ }
if (Unk48 != 0)
{ }
if (Unk50 != 0)
{ }
if (Unk51 != 0)
{ }
} }
public override void Write(BinaryWriter bw) public override void Write(BinaryWriter bw)
@ -10492,199 +10401,200 @@ namespace CodeWalker.GameFiles
bw.Write(MasterVolume); bw.Write(MasterVolume);
bw.Write(EngineAccel); bw.Write(EngineAccel);
bw.Write(ExhaustAccel); bw.Write(ExhaustAccel);
bw.Write(Unk04); bw.Write(EngineVolume_PreSubmix);
bw.Write(Unk05); bw.Write(ExhaustVolume_PreSubmix);
bw.Write(Unk06); bw.Write(AccelVolume_PreSubmix);
bw.Write(Unk07); bw.Write(DecelVolume_PreSubmix);
bw.Write(Unk08); bw.Write(IdleVolume_PreSubmix);
bw.Write(Unk09); bw.Write(EngineRevsVolume_PreSubmix);
bw.Write(Unk10); bw.Write(ExhaustRevsVolume_PreSubmix);
bw.Write(Unk11); bw.Write(EngineThrottleVolume_PreSubmix);
bw.Write(Unk12); bw.Write(ExhaustThrottleVolume_PreSubmix);
bw.Write(EngineVolume); bw.Write(EngineVolume_PostSubmix);
bw.Write(ExhaustVolume); bw.Write(ExhaustVolume_PostSubmix);
bw.Write(EngineIdleVolume); bw.Write(EngineMaxConeAttenuation);
bw.Write(ExhaustIdleVolume); bw.Write(ExhaustMaxConeAttenuation);
bw.Write(Unk17); bw.Write(EngineRevsVolume_PostSubmix);
bw.Write(Unk18); bw.Write(ExhaustRevsVolume_PostSubmix);
bw.Write(EngineAccelVolume); bw.Write(EngineThrottleVolume_PostSubmix);
bw.Write(ExhaustAccelVolume); bw.Write(ExhaustThrottleVolume_PostSubmix);
bw.Write(Unk21); bw.Write(GearChangeWobbleLength);
bw.Write(Unk22); bw.Write(GearChangeWobbleLengthVariance);
bw.Write(Unk23); bw.Write(GearChangeWobbleSpeed);
bw.Write(Unk24); bw.Write(GearChangeWobbleSpeedVariance);
bw.Write(Unk25); bw.Write(GearChangeWobblePitch);
bw.Write(Unk26); bw.Write(GearChangeWobblePitchVariance);
bw.Write(Unk27); bw.Write(GearChangeWobbleVolume);
bw.Write(Unk28); bw.Write(GearChangeWobbleVolumeVariance);
bw.Write(Unk29); bw.Write(EngineClutchAttenuation_PostSubmix);
bw.Write(Unk30); bw.Write(ExhaustClutchAttenuation_PostSubmix);
bw.Write(EngineSubmix); bw.Write(EngineSynthDef);
bw.Write(EngineSubmixPreset); bw.Write(EngineSynthPreset);
bw.Write(ExhaustSubmix); bw.Write(ExhaustSynthDef);
bw.Write(ExhaustSubmixPreset); bw.Write(ExhaustSynthPreset);
bw.Write(EngineAccelNPC); bw.Write(NPCEngineAccel);
bw.Write(ExhaustAccelNPC); bw.Write(NPCExhaustAccel);
bw.Write(LimiterPops); bw.Write(RevLimiterPopSound);
bw.Write(Unk38); bw.Write(MinRPMOverride);
bw.Write(Unk39); bw.Write(MaxRPMOverride);
bw.Write(Unk40); bw.Write(EngineSubmixVoice);
bw.Write(Unk41); bw.Write(ExhaustSubmixVoice);
bw.Write(Unk42); bw.Write(ExhaustProximityVolume_PostSubmix);
bw.Write(Unk43); bw.Write(RevLimiterGrainsToPlay);
bw.Write(Unk44); bw.Write(RevLimiterGrainsToSkip);
bw.Write(IdleSub); bw.Write(SynchronisedSynth);
bw.Write(Unk46); bw.Write(UpgradedEngineVolumeBoost_PostSubmix);
bw.Write(Unk47); bw.Write(UpgradedEngineSynthDef);
bw.Write(Unk48); bw.Write(UpgradedEngineSynthPreset);
bw.Write(Unk49); bw.Write(UpgradedExhaustVolumeBoost_PostSubmix);
bw.Write(Unk50); bw.Write(UpgradedExhaustSynthDef);
bw.Write(Unk51); bw.Write(UpgradedExhaustSynthPreset);
bw.Write(EngineDamage); bw.Write(DamageSynthHashList);
bw.Write(LimiterPopsUpgraded); bw.Write(UpgradedRevLimiterPop);
bw.Write(Unk54); bw.Write(EngineIdleVolume_PostSubmix);
bw.Write(Unk55); bw.Write(ExhaustIdleVolume_PostSubmix);
bw.Write(Unk56); bw.Write(StartupRevsVolumeBoostEngine_PostSubmix);
bw.Write(Unk57); bw.Write(StartupRevsVolumeBoostExhaust_PostSubmix);
if ((Unk58 != 0) || (Unk59 != 0))//how else to know?? seems hacky! bw.Write(RevLimiterApplyType);
{ bw.Write(padding00);
bw.Write(Unk58); bw.Write(padding01);
bw.Write(Unk59); bw.Write(RevLimiterVolumeCut);
}
} }
public override void WriteXml(StringBuilder sb, int indent) public override void WriteXml(StringBuilder sb, int indent)
{ {
RelXml.ValueTag(sb, indent, "Flags", "0x" + Flags.Hex); RelXml.ValueTag(sb, indent, "Flags", "0x" + Flags.Hex);
RelXml.ValueTag(sb, indent, "MasterVolume", MasterVolume.ToString()); RelXml.ValueTag(sb, indent, "MasterVolume", MasterVolume.ToString());
RelXml.StringTag(sb, indent, "EngineAccel", RelXml.HashString(EngineAccel)); RelXml.StringTag(sb, indent, "EngineAccel", EngineAccel.ToString());
RelXml.StringTag(sb, indent, "ExhaustAccel", RelXml.HashString(ExhaustAccel)); RelXml.StringTag(sb, indent, "ExhaustAccel", ExhaustAccel.ToString());
RelXml.ValueTag(sb, indent, "Unk04", Unk04.ToString()); RelXml.ValueTag(sb, indent, "EngineVolume_PreSubmix", RelXml.HashString(EngineVolume_PreSubmix));
RelXml.ValueTag(sb, indent, "Unk05", Unk05.ToString()); RelXml.ValueTag(sb, indent, "ExhaustVolume_PreSubmix", RelXml.HashString(ExhaustVolume_PreSubmix));
RelXml.ValueTag(sb, indent, "Unk06", Unk06.ToString()); RelXml.ValueTag(sb, indent, "AccelVolume_PreSubmix", RelXml.HashString(AccelVolume_PreSubmix));
RelXml.ValueTag(sb, indent, "Unk07", Unk07.ToString()); RelXml.ValueTag(sb, indent, "DecelVolume_PreSubmix", RelXml.HashString(DecelVolume_PreSubmix));
RelXml.ValueTag(sb, indent, "Unk08", Unk08.ToString()); RelXml.ValueTag(sb, indent, "IdleVolume_PreSubmix", RelXml.HashString(IdleVolume_PreSubmix));
RelXml.ValueTag(sb, indent, "Unk09", Unk09.ToString()); RelXml.ValueTag(sb, indent, "EngineRevsVolume_PreSubmix", RelXml.HashString(EngineRevsVolume_PreSubmix));
RelXml.ValueTag(sb, indent, "Unk10", Unk10.ToString()); RelXml.ValueTag(sb, indent, "ExhaustRevsVolume_PreSubmix", RelXml.HashString(ExhaustRevsVolume_PreSubmix));
RelXml.ValueTag(sb, indent, "Unk11", Unk11.ToString()); RelXml.ValueTag(sb, indent, "EngineThrottleVolume_PreSubmix", RelXml.HashString(EngineThrottleVolume_PreSubmix));
RelXml.ValueTag(sb, indent, "Unk12", Unk12.ToString()); RelXml.ValueTag(sb, indent, "ExhaustThrottleVolume_PreSubmix", RelXml.HashString(ExhaustThrottleVolume_PreSubmix));
RelXml.ValueTag(sb, indent, "EngineVolume", EngineVolume.ToString()); RelXml.ValueTag(sb, indent, "EngineVolume_PostSubmix", RelXml.HashString(EngineVolume_PostSubmix));
RelXml.ValueTag(sb, indent, "ExhaustVolume", ExhaustVolume.ToString()); RelXml.ValueTag(sb, indent, "ExhaustVolume_PostSubmix", RelXml.HashString(ExhaustVolume_PostSubmix));
RelXml.ValueTag(sb, indent, "EngineIdleVolume", EngineIdleVolume.ToString()); RelXml.ValueTag(sb, indent, "EngineMaxConeAttenuation", EngineMaxConeAttenuation.ToString());
RelXml.ValueTag(sb, indent, "ExhaustIdleVolume", ExhaustIdleVolume.ToString()); RelXml.ValueTag(sb, indent, "ExhaustMaxConeAttenuation", ExhaustMaxConeAttenuation.ToString());
RelXml.ValueTag(sb, indent, "Unk17", Unk17.ToString()); RelXml.ValueTag(sb, indent, "EngineRevsVolume_PostSubmix", RelXml.HashString(EngineRevsVolume_PostSubmix));
RelXml.ValueTag(sb, indent, "Unk18", Unk18.ToString()); RelXml.ValueTag(sb, indent, "ExhaustRevsVolume_PostSubmix", RelXml.HashString(ExhaustRevsVolume_PostSubmix));
RelXml.ValueTag(sb, indent, "EngineAccelVolume", EngineAccelVolume.ToString()); RelXml.ValueTag(sb, indent, "EngineThrottleVolume_PostSubmix", RelXml.HashString(EngineThrottleVolume_PostSubmix));
RelXml.ValueTag(sb, indent, "ExhaustAccelVolume", ExhaustAccelVolume.ToString()); RelXml.ValueTag(sb, indent, "ExhaustThrottleVolume_PostSubmix", RelXml.HashString(ExhaustThrottleVolume_PostSubmix));
RelXml.ValueTag(sb, indent, "Unk21", Unk21.ToString()); RelXml.ValueTag(sb, indent, "GearChangeWobbleLength", GearChangeWobbleLength.ToString());
RelXml.ValueTag(sb, indent, "Unk22", FloatUtil.ToString(Unk22)); RelXml.ValueTag(sb, indent, "GearChangeWobbleLengthVariance", FloatUtil.ToString(GearChangeWobbleLengthVariance));
RelXml.ValueTag(sb, indent, "Unk23", FloatUtil.ToString(Unk23)); RelXml.ValueTag(sb, indent, "GearChangeWobbleSpeed", FloatUtil.ToString(GearChangeWobbleSpeed));
RelXml.ValueTag(sb, indent, "Unk24", FloatUtil.ToString(Unk24)); RelXml.ValueTag(sb, indent, "GearChangeWobbleSpeedVariance", FloatUtil.ToString(GearChangeWobbleSpeedVariance));
RelXml.ValueTag(sb, indent, "Unk25", FloatUtil.ToString(Unk25)); RelXml.ValueTag(sb, indent, "GearChangeWobblePitch", FloatUtil.ToString(GearChangeWobblePitch));
RelXml.ValueTag(sb, indent, "Unk26", FloatUtil.ToString(Unk26)); RelXml.ValueTag(sb, indent, "GearChangeWobblePitchVariance", FloatUtil.ToString(GearChangeWobblePitchVariance));
RelXml.ValueTag(sb, indent, "Unk27", FloatUtil.ToString(Unk27)); RelXml.ValueTag(sb, indent, "GearChangeWobbleVolume", FloatUtil.ToString(GearChangeWobbleVolume));
RelXml.ValueTag(sb, indent, "Unk28", FloatUtil.ToString(Unk28)); RelXml.ValueTag(sb, indent, "GearChangeWobbleVolumeVariance", FloatUtil.ToString(GearChangeWobbleVolumeVariance));
RelXml.ValueTag(sb, indent, "Unk29", Unk29.ToString()); RelXml.ValueTag(sb, indent, "EngineClutchAttenuation_PostSubmix", RelXml.HashString(EngineClutchAttenuation_PostSubmix));
RelXml.ValueTag(sb, indent, "Unk30", Unk30.ToString()); RelXml.ValueTag(sb, indent, "ExhaustClutchAttenuation_PostSubmix", RelXml.HashString(ExhaustClutchAttenuation_PostSubmix));
RelXml.StringTag(sb, indent, "EngineSubmix", RelXml.HashString(EngineSubmix)); RelXml.StringTag(sb, indent, "EngineSynthDef", EngineSynthDef.ToString());
RelXml.StringTag(sb, indent, "EngineSubmixPreset", RelXml.HashString(EngineSubmixPreset)); RelXml.StringTag(sb, indent, "EngineSynthPreset", EngineSynthPreset.ToString());
RelXml.StringTag(sb, indent, "ExhaustSubmix", RelXml.HashString(ExhaustSubmix)); RelXml.StringTag(sb, indent, "ExhaustSynthDef", ExhaustSynthDef.ToString());
RelXml.StringTag(sb, indent, "ExhaustSubmixPreset", RelXml.HashString(ExhaustSubmixPreset)); RelXml.StringTag(sb, indent, "ExhaustSynthPreset", ExhaustSynthPreset.ToString());
RelXml.StringTag(sb, indent, "EngineAccelNPC", RelXml.HashString(EngineAccelNPC)); RelXml.StringTag(sb, indent, "NPCEngineAccel", NPCEngineAccel.ToString());
RelXml.StringTag(sb, indent, "ExhaustAccelNPC", RelXml.HashString(ExhaustAccelNPC)); RelXml.StringTag(sb, indent, "NPCExhaustAccel", NPCExhaustAccel.ToString());
RelXml.StringTag(sb, indent, "LimiterPops", RelXml.HashString(LimiterPops)); RelXml.StringTag(sb, indent, "RevLimiterPopSound", RevLimiterPopSound.ToString());
RelXml.ValueTag(sb, indent, "Unk38", Unk38.ToString()); RelXml.ValueTag(sb, indent, "MinRPMOverride", MinRPMOverride.ToString());
RelXml.ValueTag(sb, indent, "Unk39", Unk39.ToString()); RelXml.ValueTag(sb, indent, "MaxRPMOverride", MaxRPMOverride.ToString());
RelXml.StringTag(sb, indent, "Unk40", RelXml.HashString(Unk40)); RelXml.StringTag(sb, indent, "EngineSubmixVoice", EngineSubmixVoice.ToString());
RelXml.StringTag(sb, indent, "Unk41", RelXml.HashString(Unk41)); RelXml.StringTag(sb, indent, "ExhaustSubmixVoice", ExhaustSubmixVoice.ToString());
RelXml.ValueTag(sb, indent, "Unk42", Unk42.ToString()); RelXml.ValueTag(sb, indent, "ExhaustProximityVolume_PostSubmix", RelXml.HashString(ExhaustProximityVolume_PostSubmix));
RelXml.ValueTag(sb, indent, "Unk43", Unk43.ToString()); RelXml.ValueTag(sb, indent, "RevLimiterGrainsToPlay", RevLimiterGrainsToPlay.ToString());
RelXml.ValueTag(sb, indent, "Unk44", Unk44.ToString()); RelXml.ValueTag(sb, indent, "RevLimiterGrainsToSkip", RevLimiterGrainsToSkip.ToString());
RelXml.StringTag(sb, indent, "IdleSub", RelXml.HashString(IdleSub)); RelXml.StringTag(sb, indent, "SynchronisedSynth", SynchronisedSynth.ToString());
RelXml.ValueTag(sb, indent, "Unk46", Unk46.ToString()); RelXml.ValueTag(sb, indent, "UpgradedEngineVolumeBoost_PostSubmix", RelXml.HashString(UpgradedEngineVolumeBoost_PostSubmix));
RelXml.ValueTag(sb, indent, "Unk47", Unk47.ToString()); RelXml.ValueTag(sb, indent, "UpgradedEngineSynthDef", UpgradedEngineSynthDef.ToString());
RelXml.ValueTag(sb, indent, "Unk48", Unk48.ToString()); RelXml.ValueTag(sb, indent, "UpgradedEngineSynthPreset", UpgradedEngineSynthPreset.ToString());
RelXml.ValueTag(sb, indent, "Unk49", Unk49.ToString()); RelXml.ValueTag(sb, indent, "UpgradedExhaustVolumeBoost_PostSubmix", RelXml.HashString(UpgradedExhaustVolumeBoost_PostSubmix));
RelXml.StringTag(sb, indent, "Unk50", RelXml.HashString(Unk50)); RelXml.StringTag(sb, indent, "UpgradedExhaustSynthDef", UpgradedExhaustSynthDef.ToString());
RelXml.StringTag(sb, indent, "Unk51", RelXml.HashString(Unk51)); RelXml.StringTag(sb, indent, "UpgradedExhaustSynthPreset", UpgradedExhaustSynthPreset.ToString());
RelXml.StringTag(sb, indent, "EngineDamage", RelXml.HashString(EngineDamage)); RelXml.StringTag(sb, indent, "DamageSynthHashList", DamageSynthHashList.ToString());
RelXml.StringTag(sb, indent, "LimiterPopsUpgraded", RelXml.HashString(LimiterPopsUpgraded)); RelXml.StringTag(sb, indent, "UpgradedRevLimiterPop", UpgradedRevLimiterPop.ToString());
RelXml.ValueTag(sb, indent, "Unk54", Unk54.ToString()); RelXml.ValueTag(sb, indent, "EngineIdleVolume_PostSubmix", RelXml.HashString(EngineIdleVolume_PostSubmix));
RelXml.ValueTag(sb, indent, "Unk55", Unk55.ToString()); RelXml.ValueTag(sb, indent, "ExhaustIdleVolume_PostSubmix", RelXml.HashString(ExhaustIdleVolume_PostSubmix));
RelXml.ValueTag(sb, indent, "Unk56", Unk56.ToString()); RelXml.ValueTag(sb, indent, "StartupRevsVolumeBoostEngine_PostSubmix", RelXml.HashString(StartupRevsVolumeBoostEngine_PostSubmix));
RelXml.ValueTag(sb, indent, "Unk57", Unk57.ToString()); RelXml.ValueTag(sb, indent, "StartupRevsVolumeBoostExhaust_PostSubmix", RelXml.HashString(StartupRevsVolumeBoostExhaust_PostSubmix));
RelXml.ValueTag(sb, indent, "Unk58", Unk58.ToString()); RelXml.ValueTag(sb, indent, "RevLimiterApplyType", RevLimiterApplyType.ToString());
RelXml.ValueTag(sb, indent, "Unk59", FloatUtil.ToString(Unk59)); RelXml.ValueTag(sb, indent, "RevLimiterVolumeCut", FloatUtil.ToString(RevLimiterVolumeCut));
} }
public override void ReadXml(XmlNode node) public override void ReadXml(XmlNode node)
{ {
Flags = Xml.GetChildUIntAttribute(node, "Flags", "value"); Flags = Xml.GetChildUIntAttribute(node, "Flags", "value");
MasterVolume = Xml.GetChildIntAttribute(node, "MasterVolume", "value"); MasterVolume = Xml.GetChildIntAttribute(node, "MasterVolume", "value");
EngineAccel = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineAccel")); EngineAccel = Xml.GetChildUIntAttribute(node, "EngineAccel", "value");
ExhaustAccel = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustAccel")); ExhaustAccel = Xml.GetChildUIntAttribute(node, "ExhaustAccel", "value");
Unk04 = Xml.GetChildIntAttribute(node, "Unk04", "value"); EngineVolume_PreSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineVolume_PreSubmix"));
Unk05 = Xml.GetChildIntAttribute(node, "Unk05", "value"); ExhaustVolume_PreSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustVolume_PreSubmix"));
Unk06 = Xml.GetChildIntAttribute(node, "Unk06", "value"); AccelVolume_PreSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "AccelVolume_PreSubmix"));
Unk07 = Xml.GetChildIntAttribute(node, "Unk07", "value"); DecelVolume_PreSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "DecelVolume_PreSubmix"));
Unk08 = Xml.GetChildIntAttribute(node, "Unk08", "value"); IdleVolume_PreSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "IdleVolume_PreSubmix"));
Unk09 = Xml.GetChildIntAttribute(node, "Unk09", "value"); EngineRevsVolume_PreSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineRevsVolume_PreSubmix"));
Unk10 = Xml.GetChildIntAttribute(node, "Unk10", "value"); ExhaustRevsVolume_PreSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustRevsVolume_PreSubmix"));
Unk11 = Xml.GetChildIntAttribute(node, "Unk11", "value"); EngineThrottleVolume_PreSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineThrottleVolume_PreSubmix"));
Unk12 = Xml.GetChildIntAttribute(node, "Unk12", "value"); ExhaustThrottleVolume_PreSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustThrottleVolume_PreSubmix"));
EngineVolume = Xml.GetChildIntAttribute(node, "EngineVolume", "value"); EngineVolume_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineVolume_PostSubmix"));
ExhaustVolume = Xml.GetChildIntAttribute(node, "ExhaustVolume", "value"); ExhaustVolume_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustVolume_PostSubmix"));
EngineIdleVolume = Xml.GetChildIntAttribute(node, "EngineIdleVolume", "value"); EngineMaxConeAttenuation = Xml.GetChildIntAttribute(node, "EngineMaxConeAttenuation", "value");
ExhaustIdleVolume = Xml.GetChildIntAttribute(node, "ExhaustIdleVolume", "value"); ExhaustMaxConeAttenuation = Xml.GetChildIntAttribute(node, "ExhaustMaxConeAttenuation", "value");
Unk17 = Xml.GetChildIntAttribute(node, "Unk17", "value"); EngineRevsVolume_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineRevsVolume_PostSubmix"));
Unk18 = Xml.GetChildIntAttribute(node, "Unk18", "value"); ExhaustRevsVolume_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustRevsVolume_PostSubmix"));
EngineAccelVolume = Xml.GetChildIntAttribute(node, "EngineAccelVolume", "value"); EngineThrottleVolume_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineThrottleVolume_PostSubmix"));
ExhaustAccelVolume = Xml.GetChildIntAttribute(node, "ExhaustAccelVolume", "value"); ExhaustThrottleVolume_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustThrottleVolume_PostSubmix"));
Unk21 = Xml.GetChildIntAttribute(node, "Unk21", "value"); GearChangeWobbleLength = Xml.GetChildUIntAttribute(node, "GearChangeWobbleLength", "value");
Unk22 = Xml.GetChildFloatAttribute(node, "Unk22", "value"); GearChangeWobbleLengthVariance = Xml.GetChildFloatAttribute(node, "GearChangeWobbleLengthVariance", "value");
Unk23 = Xml.GetChildFloatAttribute(node, "Unk23", "value"); GearChangeWobbleSpeed = Xml.GetChildFloatAttribute(node, "GearChangeWobbleSpeed", "value");
Unk24 = Xml.GetChildFloatAttribute(node, "Unk24", "value"); GearChangeWobbleSpeedVariance = Xml.GetChildFloatAttribute(node, "GearChangeWobbleSpeedVariance", "value");
Unk25 = Xml.GetChildFloatAttribute(node, "Unk25", "value"); GearChangeWobblePitch = Xml.GetChildFloatAttribute(node, "GearChangeWobblePitch", "value");
Unk26 = Xml.GetChildFloatAttribute(node, "Unk26", "value"); GearChangeWobblePitchVariance = Xml.GetChildFloatAttribute(node, "GearChangeWobblePitchVariance", "value");
Unk27 = Xml.GetChildFloatAttribute(node, "Unk27", "value"); GearChangeWobbleVolume = Xml.GetChildFloatAttribute(node, "GearChangeWobbleVolume", "value");
Unk28 = Xml.GetChildFloatAttribute(node, "Unk28", "value"); GearChangeWobbleVolumeVariance = Xml.GetChildFloatAttribute(node, "GearChangeWobbleVolumeVariance", "value");
Unk29 = Xml.GetChildIntAttribute(node, "Unk29", "value"); EngineClutchAttenuation_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineClutchAttenuation_PostSubmix"));
Unk30 = Xml.GetChildIntAttribute(node, "Unk30", "value"); ExhaustClutchAttenuation_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustClutchAttenuation_PostSubmix"));
EngineSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineSubmix")); EngineSynthDef = Xml.GetChildUIntAttribute(node, "EngineSynthDef", "value");
EngineSubmixPreset = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineSubmixPreset")); EngineSynthPreset = Xml.GetChildUIntAttribute(node, "EngineSynthPreset", "value");
ExhaustSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustSubmix")); ExhaustSynthDef = Xml.GetChildUIntAttribute(node, "ExhaustSynthDef", "value");
ExhaustSubmixPreset = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustSubmixPreset")); ExhaustSynthPreset = Xml.GetChildUIntAttribute(node, "ExhaustSynthPreset", "value");
EngineAccelNPC = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineAccelNPC")); NPCEngineAccel = Xml.GetChildUIntAttribute(node, "NPCEngineAccel", "value");
ExhaustAccelNPC = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustAccelNPC")); NPCExhaustAccel = Xml.GetChildUIntAttribute(node, "NPCExhaustAccel", "value");
LimiterPops = XmlRel.GetHash(Xml.GetChildInnerText(node, "LimiterPops")); RevLimiterPopSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "LimiterPops"));
Unk38 = Xml.GetChildIntAttribute(node, "Unk38", "value"); MinRPMOverride = Xml.GetChildUIntAttribute(node, "MinRPMOverride", "value");
Unk39 = Xml.GetChildIntAttribute(node, "Unk39", "value"); MaxRPMOverride = Xml.GetChildUIntAttribute(node, "MaxRPMOverride", "value");
Unk40 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk40")); EngineSubmixVoice = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineSubmixVoice"));
Unk41 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk41")); ExhaustSubmixVoice = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustSubmixVoice"));
Unk42 = Xml.GetChildIntAttribute(node, "Unk42", "value"); ExhaustProximityVolume_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustProximityVolume_PostSubmix"));
Unk43 = Xml.GetChildIntAttribute(node, "Unk43", "value"); RevLimiterGrainsToPlay = Xml.GetChildUIntAttribute(node, "RevLimiterGrainsToPlay", "value");
Unk44 = Xml.GetChildIntAttribute(node, "Unk44", "value"); RevLimiterGrainsToSkip = Xml.GetChildUIntAttribute(node, "RevLimiterGrainsToSkip", "value");
IdleSub = XmlRel.GetHash(Xml.GetChildInnerText(node, "IdleSub")); SynchronisedSynth = Xml.GetChildUIntAttribute(node, "SynchronisedSynth", "value");
Unk46 = Xml.GetChildIntAttribute(node, "Unk46", "value"); UpgradedEngineVolumeBoost_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "UpgradedEngineVolumeBoost_PostSubmix"));
Unk47 = Xml.GetChildIntAttribute(node, "Unk47", "value"); UpgradedEngineSynthDef = Xml.GetChildUIntAttribute(node, "UpgradedEngineSynthDef", "value");
Unk48 = Xml.GetChildIntAttribute(node, "Unk48", "value"); UpgradedEngineSynthPreset = Xml.GetChildUIntAttribute(node, "UpgradedEngineSynthPreset", "value");
Unk49 = Xml.GetChildIntAttribute(node, "Unk49", "value"); UpgradedExhaustVolumeBoost_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "UpgradedExhaustVolumeBoost_PostSubmix"));
Unk50 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk50")); UpgradedExhaustSynthDef = Xml.GetChildUIntAttribute(node, "UpgradedExhaustSynthDef", "value");
Unk51 = XmlRel.GetHash(Xml.GetChildInnerText(node, "Unk51")); UpgradedExhaustSynthPreset = Xml.GetChildUIntAttribute(node, "UpgradedExhaustSynthPreset", "value"); ;
EngineDamage = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineDamage")); DamageSynthHashList = Xml.GetChildUIntAttribute(node, "DamageSynthHashList", "value"); ;
LimiterPopsUpgraded = XmlRel.GetHash(Xml.GetChildInnerText(node, "LimiterPopsUpgraded")); UpgradedRevLimiterPop = Xml.GetChildUIntAttribute(node, "UpgradedRevLimiterPop", "value"); ;
Unk54 = Xml.GetChildIntAttribute(node, "Unk54", "value"); EngineIdleVolume_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "EngineIdleVolume_PostSubmix"));
Unk55 = Xml.GetChildIntAttribute(node, "Unk55", "value"); ExhaustIdleVolume_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "ExhaustIdleVolume_PostSubmix"));
Unk56 = Xml.GetChildIntAttribute(node, "Unk56", "value"); StartupRevsVolumeBoostEngine_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "StartupRevsVolumeBoostEngine_PostSubmix"));
Unk57 = Xml.GetChildIntAttribute(node, "Unk57", "value"); StartupRevsVolumeBoostExhaust_PostSubmix = XmlRel.GetHash(Xml.GetChildInnerText(node, "StartupRevsVolumeBoostExhaust_PostSubmix"));
Unk58 = Xml.GetChildIntAttribute(node, "Unk58", "value"); RevLimiterApplyType = (byte)Xml.GetChildIntAttribute(node, "RevLimiterApplyType", "value");
Unk59 = Xml.GetChildFloatAttribute(node, "Unk59", "value"); RevLimiterVolumeCut = Xml.GetChildFloatAttribute(node, "RevLimiterVolumeCut", "value");
}
public override MetaHash[] GetSynthHashes()
{
return new[] { EngineSubmix, EngineSubmixPreset, ExhaustSubmix, ExhaustSubmixPreset, Unk50, Unk51 };
} }
public override MetaHash[] GetSoundHashes() public override MetaHash[] GetSoundHashes()
{ {
return new[] { EngineAccel, ExhaustAccel, EngineAccelNPC, ExhaustAccelNPC, LimiterPops, Unk40, Unk41, IdleSub, EngineDamage, LimiterPopsUpgraded }; return new[] {
EngineVolume_PostSubmix, ExhaustVolume_PostSubmix, EngineRevsVolume_PostSubmix, ExhaustRevsVolume_PostSubmix, EngineThrottleVolume_PostSubmix, ExhaustThrottleVolume_PostSubmix,
EngineClutchAttenuation_PostSubmix, ExhaustClutchAttenuation_PostSubmix, ExhaustProximityVolume_PostSubmix, EngineSubmixVoice, ExhaustSubmixVoice, UpgradedEngineVolumeBoost_PostSubmix,
UpgradedExhaustVolumeBoost_PostSubmix, EngineIdleVolume_PostSubmix, ExhaustIdleVolume_PostSubmix, StartupRevsVolumeBoostEngine_PostSubmix, StartupRevsVolumeBoostExhaust_PostSubmix,
EngineVolume_PreSubmix, ExhaustVolume_PreSubmix, AccelVolume_PreSubmix, DecelVolume_PreSubmix, IdleVolume_PreSubmix, EngineRevsVolume_PreSubmix, ExhaustRevsVolume_PreSubmix,
EngineThrottleVolume_PreSubmix, ExhaustThrottleVolume_PreSubmix
};
} }
} }
[TC(typeof(EXP))] public class Dat151Vehicle : Dat151RelData [TC(typeof(EXP))] public class Dat151Vehicle : Dat151RelData

View File

@ -75,22 +75,20 @@ namespace CodeWalker.Project.Panels
var cr = CurrentRoom; var cr = CurrentRoom;
NameTextBox.Text = cr.NameHash.ToString(); NameTextBox.Text = cr.NameHash.ToString();
MloRoomTextBox.Text = cr.MloRoom.ToString(); MloRoomTextBox.Text = cr.RoomName.ToString();
ZoneTextBox.Text = cr.Zone.ToString(); ZoneTextBox.Text = cr.AmbientZone.ToString();
Unk02TextBox.Text = cr.Unk02.ToString(); Unk03TextBox.Text = FloatUtil.ToString(cr.ReverbSmall);
Unk03TextBox.Text = FloatUtil.ToString(cr.Unk03); ReverbTextBox.Text = FloatUtil.ToString(cr.ReverbMedium);
ReverbTextBox.Text = FloatUtil.ToString(cr.Reverb); EchoTextBox.Text = FloatUtil.ToString(cr.ReverbLarge);
EchoTextBox.Text = FloatUtil.ToString(cr.Echo);
SoundTextBox.Text = cr.Sound.ToString(); SoundTextBox.Text = cr.Sound.ToString();
Unk07TextBox.Text = FloatUtil.ToString(cr.Unk07); Unk08TextBox.Text = FloatUtil.ToString(cr.ExteriorAudibility);
Unk08TextBox.Text = FloatUtil.ToString(cr.Unk08); Unk09TextBox.Text = FloatUtil.ToString(cr.RoomOcclusionDamping);
Unk09TextBox.Text = FloatUtil.ToString(cr.Unk09); Unk10TextBox.Text = FloatUtil.ToString(cr.NonMarkedPortalOcclusion);
Unk10TextBox.Text = FloatUtil.ToString(cr.Unk10); Unk11TextBox.Text = FloatUtil.ToString(cr.DistanceFromPortalForOcclusion);
Unk11TextBox.Text = FloatUtil.ToString(cr.Unk11); Unk12TextBox.Text = FloatUtil.ToString(cr.DistanceFromPortalFadeDistance);
Unk12TextBox.Text = FloatUtil.ToString(cr.Unk12); Unk13TextBox.Text = cr.WeaponMetrics.ToString();
Unk13TextBox.Text = cr.Unk13.ToString(); SoundSetTextBox.Text = cr.InteriorWallaSoundSet.ToString();
SoundSetTextBox.Text = cr.SoundSet.ToString(); Flags0TextBox.Text = cr.Flags.Hex;
Flags0TextBox.Text = cr.Flags0.Hex;
populatingui = false; populatingui = false;
@ -144,9 +142,9 @@ namespace CodeWalker.Project.Panels
} }
//NameHashLabel.Text = "Hash: " + hash.ToString(); //NameHashLabel.Text = "Hash: " + hash.ToString();
if (CurrentRoom.MloRoom != hash) if (CurrentRoom.RoomName != hash)
{ {
CurrentRoom.MloRoom = hash; CurrentRoom.RoomName = hash;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -166,9 +164,9 @@ namespace CodeWalker.Project.Panels
} }
//NameHashLabel.Text = "Hash: " + hash.ToString(); //NameHashLabel.Text = "Hash: " + hash.ToString();
if (CurrentRoom.Zone != hash) if (CurrentRoom.AmbientZone != hash)
{ {
CurrentRoom.Zone = hash; CurrentRoom.AmbientZone = hash;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -179,16 +177,6 @@ namespace CodeWalker.Project.Panels
if (populatingui) return; if (populatingui) return;
if (CurrentRoom == null) return; if (CurrentRoom == null) return;
uint val = 0;
if (uint.TryParse(Unk02TextBox.Text, out val))
{
if (CurrentRoom.Unk02 != val)
{
CurrentRoom.Unk02 = val;
ProjectItemChanged();
}
}
} }
private void Unk03TextBox_TextChanged(object sender, EventArgs e) private void Unk03TextBox_TextChanged(object sender, EventArgs e)
@ -199,9 +187,9 @@ namespace CodeWalker.Project.Panels
float val = 0; float val = 0;
if (FloatUtil.TryParse(Unk03TextBox.Text, out val)) if (FloatUtil.TryParse(Unk03TextBox.Text, out val))
{ {
if (CurrentRoom.Unk03 != val) if (CurrentRoom.ReverbSmall != val)
{ {
CurrentRoom.Unk03 = val; CurrentRoom.ReverbSmall = val;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -216,9 +204,9 @@ namespace CodeWalker.Project.Panels
float val = 0; float val = 0;
if (FloatUtil.TryParse(ReverbTextBox.Text, out val)) if (FloatUtil.TryParse(ReverbTextBox.Text, out val))
{ {
if (CurrentRoom.Reverb != val) if (CurrentRoom.ReverbMedium != val)
{ {
CurrentRoom.Reverb = val; CurrentRoom.ReverbMedium = val;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -233,9 +221,9 @@ namespace CodeWalker.Project.Panels
float val = 0; float val = 0;
if (FloatUtil.TryParse(EchoTextBox.Text, out val)) if (FloatUtil.TryParse(EchoTextBox.Text, out val))
{ {
if (CurrentRoom.Echo != val) if (CurrentRoom.ReverbLarge != val)
{ {
CurrentRoom.Echo = val; CurrentRoom.ReverbLarge = val;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -269,16 +257,6 @@ namespace CodeWalker.Project.Panels
if (populatingui) return; if (populatingui) return;
if (CurrentRoom == null) return; if (CurrentRoom == null) return;
float val = 0;
if (FloatUtil.TryParse(Unk07TextBox.Text, out val))
{
if (CurrentRoom.Unk07 != val)
{
CurrentRoom.Unk07 = val;
ProjectItemChanged();
}
}
} }
private void Unk08TextBox_TextChanged(object sender, EventArgs e) private void Unk08TextBox_TextChanged(object sender, EventArgs e)
@ -289,9 +267,9 @@ namespace CodeWalker.Project.Panels
float val = 0; float val = 0;
if (FloatUtil.TryParse(Unk08TextBox.Text, out val)) if (FloatUtil.TryParse(Unk08TextBox.Text, out val))
{ {
if (CurrentRoom.Unk08 != val) if (CurrentRoom.ExteriorAudibility != val)
{ {
CurrentRoom.Unk08 = val; CurrentRoom.ExteriorAudibility = val;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -306,9 +284,9 @@ namespace CodeWalker.Project.Panels
float val = 0; float val = 0;
if (FloatUtil.TryParse(Unk09TextBox.Text, out val)) if (FloatUtil.TryParse(Unk09TextBox.Text, out val))
{ {
if (CurrentRoom.Unk09 != val) if (CurrentRoom.RoomOcclusionDamping != val)
{ {
CurrentRoom.Unk09 = val; CurrentRoom.RoomOcclusionDamping = val;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -323,9 +301,9 @@ namespace CodeWalker.Project.Panels
float val = 0; float val = 0;
if (FloatUtil.TryParse(Unk10TextBox.Text, out val)) if (FloatUtil.TryParse(Unk10TextBox.Text, out val))
{ {
if (CurrentRoom.Unk10 != val) if (CurrentRoom.NonMarkedPortalOcclusion != val)
{ {
CurrentRoom.Unk10 = val; CurrentRoom.NonMarkedPortalOcclusion = val;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -340,9 +318,9 @@ namespace CodeWalker.Project.Panels
float val = 0; float val = 0;
if (FloatUtil.TryParse(Unk11TextBox.Text, out val)) if (FloatUtil.TryParse(Unk11TextBox.Text, out val))
{ {
if (CurrentRoom.Unk11 != val) if (CurrentRoom.DistanceFromPortalForOcclusion != val)
{ {
CurrentRoom.Unk11 = val; CurrentRoom.DistanceFromPortalForOcclusion = val;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -357,9 +335,9 @@ namespace CodeWalker.Project.Panels
float val = 0; float val = 0;
if (FloatUtil.TryParse(Unk12TextBox.Text, out val)) if (FloatUtil.TryParse(Unk12TextBox.Text, out val))
{ {
if (CurrentRoom.Unk12 != val) if (CurrentRoom.DistanceFromPortalFadeDistance != val)
{ {
CurrentRoom.Unk12 = val; CurrentRoom.DistanceFromPortalFadeDistance = val;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -380,9 +358,9 @@ namespace CodeWalker.Project.Panels
} }
//NameHashLabel.Text = "Hash: " + hash.ToString(); //NameHashLabel.Text = "Hash: " + hash.ToString();
if (CurrentRoom.Unk13 != hash) if (CurrentRoom.WeaponMetrics != hash)
{ {
CurrentRoom.Unk13 = hash; CurrentRoom.WeaponMetrics = hash;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -402,9 +380,9 @@ namespace CodeWalker.Project.Panels
} }
//NameHashLabel.Text = "Hash: " + hash.ToString(); //NameHashLabel.Text = "Hash: " + hash.ToString();
if (CurrentRoom.SoundSet != hash) if (CurrentRoom.InteriorWallaSoundSet != hash)
{ {
CurrentRoom.SoundSet = hash; CurrentRoom.InteriorWallaSoundSet = hash;
ProjectItemChanged(); ProjectItemChanged();
} }
@ -418,9 +396,9 @@ namespace CodeWalker.Project.Panels
uint flags = 0; uint flags = 0;
if (uint.TryParse(Flags0TextBox.Text, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out flags)) if (uint.TryParse(Flags0TextBox.Text, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out flags))
{ {
if (CurrentRoom.Flags0 != flags) if (CurrentRoom.Flags != flags)
{ {
CurrentRoom.Flags0 = flags; CurrentRoom.Flags = flags;
ProjectItemChanged(); ProjectItemChanged();
} }

View File

@ -193,32 +193,21 @@
"8 - LOD in parent ymap", "8 - LOD in parent ymap",
"16 - LOD Adopt Me", "16 - LOD Adopt Me",
"32 - Static entity", "32 - Static entity",
"64 - Object isn\'t dark at night", "64 - Is Interior LOD",
"128 - Unk08", "128 - LOD Use Alt Fade",
"256 - Unk09", "256 - Unused",
"512 - Ignore Day Night Light Settings", "512 - Does Not Touch Water",
"1024 - Unk11", "1024 - Does Not Spawn Peds",
"2048 - Unk12", "2048 - Cast Static Shadows",
"4096 - Unk13", "4096 - Cast Dynamic Shadows",
"8192 - Unk14", "8192 - Dont Render In Shadows",
"16384 - Unk15", "16384 - Only Render In Shadows",
"32768 - Unk16", "32768 - Dont Render Reflections",
"65536 - Unk17", "65536 - Only Render Reflections",
"131072 - Unk18", "131072 - Dont Render Water Reflections",
"262144 - Dont Spawn Peds", "262144 - Only Render Water Reflections",
"524288 - Unk20", "524288 - Dont Render Mirror Reflections",
"1048576 - Unk21", "1048576 - Only Render Mirror Reflections"});
"2097152 - Unk22",
"4194304 - Dont Render Shadows",
"8388608 - Only Render Shadows",
"16777216 - Dont Render Reflections",
"33554432 - Only Render Reflections",
"67108864 - Dont Render Water Reflections",
"134217728 - Only Render Water Reflections",
"268435456 - Dont Render Mirror Reflections",
"536870912 - Only Render Mirror Reflections",
"1073741824 - Unk31",
"2147483648 - Unk32"});
this.EntityFlagsCheckedListBox.Location = new System.Drawing.Point(348, 113); this.EntityFlagsCheckedListBox.Location = new System.Drawing.Point(348, 113);
this.EntityFlagsCheckedListBox.Name = "EntityFlagsCheckedListBox"; this.EntityFlagsCheckedListBox.Name = "EntityFlagsCheckedListBox";
this.EntityFlagsCheckedListBox.Size = new System.Drawing.Size(201, 349); this.EntityFlagsCheckedListBox.Size = new System.Drawing.Size(201, 349);

View File

@ -6865,9 +6865,9 @@ namespace CodeWalker.Project
room.Name = "room1"; room.Name = "room1";
room.NameHash = JenkHash.GenHash(room.Name); room.NameHash = JenkHash.GenHash(room.Name);
room.Flags0 = 0xAAAAAAAA; room.Flags = 0xAAAAAAAA;
room.Sound = (uint)MetaName.null_sound; room.Sound = (uint)MetaName.null_sound;
room.SoundSet = 3565506855;//? room.InteriorWallaSoundSet = 3565506855;//?
CurrentAudioFile.AddRelData(room); CurrentAudioFile.AddRelData(room);