public override void ReadBinary(ESPReader reader) { List <string> readTags = new List <string>(); while (reader.BaseStream.Position < reader.BaseStream.Length) { string subTag = reader.PeekTag(); switch (subTag) { case "TRDT": if (readTags.Contains("TRDT")) { return; } if (ResponseData == null) { ResponseData = new ResponseData(); } ResponseData.ReadBinary(reader); break; case "NAM1": if (readTags.Contains("NAM1")) { return; } if (ResponseText == null) { ResponseText = new SimpleSubrecord <String>(); } ResponseText.ReadBinary(reader); break; case "NAM2": if (readTags.Contains("NAM2")) { return; } if (ScriptNotes == null) { ScriptNotes = new SimpleSubrecord <String>(); } ScriptNotes.ReadBinary(reader); break; case "NAM3": if (readTags.Contains("NAM3")) { return; } if (Edits == null) { Edits = new SimpleSubrecord <String>(); } Edits.ReadBinary(reader); break; case "SNAM": if (readTags.Contains("SNAM")) { return; } if (SpeakerAnimation == null) { SpeakerAnimation = new RecordReference(); } SpeakerAnimation.ReadBinary(reader); break; case "LNAM": if (readTags.Contains("LNAM")) { return; } if (ListenerAnimation == null) { ListenerAnimation = new RecordReference(); } ListenerAnimation.ReadBinary(reader); break; default: return; } readTags.Add(subTag); } }