private void AttachSource(AudioSource source) { if (this.audioPlayback == null) { return; } float gain = 1.0f; var user = gablarski.Users[source.OwnerId]; if (user != null) { users.RemoveUser(user); users.AddUser(user, gablarski.Sources[user]); VolumeEntry volume = ClientData.GetVolumes(this.server).FirstOrDefault(ve => ve.Username == user.Username); if (volume != null) { gain = volume.Gain; } } this.gablarski.Audio.Attach(this.audioPlayback, source, new AudioEnginePlaybackOptions(gain)); }
private void AssertSufficientDiskSpace(long extraDiskSpaceNeeded, [NotNull] VolumeEntry volume) { if (extraDiskSpaceNeeded > 0 && volume.FreeSpaceInBytes < extraDiskSpaceNeeded) { throw ErrorFactory.System.NotEnoughSpaceOnDisk(); } }
/// <summary> /// Updates data for given entry /// </summary> /// <param name="entry"></param> public void SetVolumeForSample(VolumeEntry entry) { using (BinaryWriter writer = new BinaryWriter(new MemoryStream(_Data))) { // IN volume : name address - 24 bytes writer.BaseStream.Seek(entry.inAddress, SeekOrigin.Begin); writer.Write(entry.inVolume); // OUT volume : name address - 20 bytes writer.BaseStream.Seek(entry.outAddress, SeekOrigin.Begin); writer.Write(entry.outVolume); }; }
private void AssertIsEncryptingOnNtFsVolume([NotNull] FileCryptoArguments arguments) { if (arguments.IsEncrypt) { if (Container.ContainsVolume(arguments.Path.VolumeName)) { VolumeEntry volume = Container.GetVolume(arguments.Path.VolumeName); if (volume.Format != FakeVolumeInfo.NtFs) { throw new NotSupportedException("File encryption support only works on NTFS partitions."); } } } }
/// <summary> /// Returns a volume entry corresponding to given sample name. /// </summary> /// <param name="sampleName"></param> /// <returns></returns> /// <exception cref="Exception">When sample does not exist</exception> public VolumeEntry GetVolumeForSample(string sampleName) { // Converts string into Array byte[] searchedArray = new byte[sampleName.Length + 2]; byte[] sampleNameArray = System.Text.Encoding.ASCII.GetBytes(sampleName); // Zone starts with '80,3F' searchedArray[0] = 0x80; searchedArray[1] = 0x3F; Array.Copy(sampleNameArray, 0, searchedArray, 2, sampleNameArray.Length); // Begins search int zoneIndex = _SubArray(_Data, searchedArray); if (zoneIndex == -1) { string msgFormat = "Sound sample '{0}' not found!"; throw new Exception(string.Format(msgFormat, sampleName)); } // Retrieves values in data bytes VolumeEntry entry = new VolumeEntry(); entry.sampleName = sampleName; zoneIndex += 2; using (BinaryReader reader = new BinaryReader(new MemoryStream(_Data))) { // IN volume : name address - 24 bytes uint inAddress = (uint)zoneIndex - 24; reader.BaseStream.Seek(inAddress, SeekOrigin.Begin); float inVolume = reader.ReadSingle(); entry.inAddress = inAddress; entry.inVolume = inVolume; // OUT volume : name address - 20 bytes uint outAddress = (uint)zoneIndex - 20; reader.BaseStream.Seek(outAddress, SeekOrigin.Begin); float outVolume = reader.ReadSingle(); entry.outAddress = outAddress; entry.outVolume = outVolume; }; return(entry); }
private void VolumeOnClick(object sender, EventArgs eventArgs) { var user = (IUserInfo)this.SelectedNode.Tag; VolumeEntry entry = ClientData.GetVolumes(Server).FirstOrDefault(ve => ve.Username == user.Username) ?? new VolumeEntry { Username = user.Username, ServerId = Server.Id }; VolumeForm volume = new VolumeForm(entry.Gain, v => { foreach (var s in Client.Sources[user]) { Client.Audio.Update(s, new AudioEnginePlaybackOptions(v)); } }, v => { entry.Gain = v; ClientData.SaveOrUpdate(entry); }); volume.ShowDialog(this.Parent); }
public VolumeSpaceTracker([NotNull] VolumeEntry volume) { Guard.NotNull(volume, nameof(volume)); this.volume = volume; }