public override void ReadData(ESPReader reader, long dataEnd) { while (reader.BaseStream.Position < dataEnd) { string subTag = reader.PeekTag(); switch (subTag) { case "EDID": if (EditorID == null) { EditorID = new SimpleSubrecord <String>(); } EditorID.ReadBinary(reader); break; case "FULL": if (Name == null) { Name = new SimpleSubrecord <String>(); } Name.ReadBinary(reader); break; case "NNAM": if (NoiseMap == null) { NoiseMap = new SimpleSubrecord <String>(); } NoiseMap.ReadBinary(reader); break; case "ANAM": if (Opacity == null) { Opacity = new SimpleSubrecord <Byte>(); } Opacity.ReadBinary(reader); break; case "FNAM": if (WaterFlags == null) { WaterFlags = new SimpleSubrecord <WaterFlags>(); } WaterFlags.ReadBinary(reader); break; case "MNAM": if (MaterialID == null) { MaterialID = new SimpleSubrecord <String>(); } MaterialID.ReadBinary(reader); break; case "SNAM": if (Sound == null) { Sound = new RecordReference(); } Sound.ReadBinary(reader); break; case "XNAM": if (ActorEffect == null) { ActorEffect = new RecordReference(); } ActorEffect.ReadBinary(reader); break; case "DATA": ReadDamage(reader); break; case "DNAM": if (Data == null) { Data = new WaterData(); } Data.ReadBinary(reader); break; case "GNAM": if (RelatedWaters == null) { RelatedWaters = new RelatedWaters(); } RelatedWaters.ReadBinary(reader); break; default: throw new Exception(); } } }