public SoundInfo(EndianReader reader)
{
OverrideParentEffectSettings = (reader.ReadByte() != 0);
ReadEffects(reader);
BusID = reader.ReadUInt32();
ParentID = reader.ReadUInt32();
OverrideParentPrioritySettings = (reader.ReadByte() != 0);
OffsetPriorityAtMaxDistance = (reader.ReadByte() != 0);
byte numParameters = reader.ReadByte();
// TODO: actually store the parameter values instead of skipping over them
reader.Skip(numParameters);
reader.Skip(numParameters * 4);
sbyte unknownCount = reader.ReadSByte();
if (unknownCount > 0)
{
reader.Skip(unknownCount);
reader.Skip(unknownCount * 8);
}
ReadPositioningInfo(reader);
// Read auxiliary send settings
OverrideParentGameDefinedAuxiliarySendSettings = (reader.ReadByte() != 0);
UseGameDefinedAuxiliarySends = (reader.ReadByte() != 0);
OverrideParentUserDefinedAuxiliarySendSettings = (reader.ReadByte() != 0);
ReadUserDefinedAuxiliarySends(reader);
bool unknown = (reader.ReadByte() != 0);
/*if (unknown)
reader.Skip(4);*/
// Read voice settings
LimitMethod = (SoundLimitMethod)reader.ReadSByte();
VirtualVoiceBehavior = (SoundVirtualVoiceBehavior)reader.ReadSByte();
OverrideParentPlaybackLimitSettings = (reader.ReadByte() != 0);
OverrideParentVirtualVoiceSettings = (reader.ReadByte() != 0);
ReadStateGroups(reader);
ReadRTPCs(reader);
reader.Skip(4); // I think this is part of the sound info data...
}