private static void WriteSound(BinaryWriter writer, Sound sound) { writer.Write(sound.Name); writer.Write(sound.Approved); writer.Write(sound.Data.LongLength); writer.Write(sound.Data); writer.Write(sound.FilePath); writer.Write(sound.IsMuted); writer.Write(sound.Looped); writer.Write(sound.Instances.HasValue ? sound.Instances.Value : int.MinValue); writer.Write(sound.Pan.HasValue ? sound.Pan.Value : float.MinValue); writer.Write(sound.Pitch.HasValue ? sound.Pitch.Value : float.MinValue); writer.Write(sound.Volume.HasValue ? sound.Volume.Value : float.MinValue); writer.Write(sound.FileLastModified.ToBinary()); }
private static void ReadSound(BinaryReader reader, INode cue) { var name = reader.ReadString(); var approved = reader.ReadBoolean(); var dataLength = reader.ReadInt64(); var data = new byte[dataLength]; for (var j = 0; j < dataLength; j++) { data[j] = reader.ReadByte(); } var filePath = reader.ReadString(); var isMuted = reader.ReadBoolean(); var looped = reader.ReadBoolean(); var instances = reader.ReadInt32(); var pan = reader.ReadSingle(); var pitch = reader.ReadSingle(); var volume = reader.ReadSingle(); var fileLastModified = reader.ReadInt64(); // Add parent first var sound = new Sound(data) { Parent = cue }; cue.Children.Add(sound); sound.Approved = approved; sound.Name = name; sound.FilePath = filePath; sound.IsMuted = isMuted; sound.Looped = looped; sound.Instances = instances == int.MinValue ? (int?) null : instances; sound.Pan = pan == float.MinValue ? (float?) null : pan; sound.Pitch = pitch == float.MinValue ? (float?)null : pitch; sound.Volume = volume == float.MinValue ? (float?)null : volume; sound.FileLastModified = DateTime.FromBinary(fileLastModified); }