public void LoadStartBoostChannel(string fileName) { StartBoostChannelHandle = ChannelFactory.Create(fileName); if (!StartBoostChannelHandle.Valid) { throw new Exception("Failed to load start boost channel."); } Bass.BASS_ChannelSetAttribute(StartBoostChannelHandle.Handle, BASSAttribute.BASS_ATTRIB_VOL, 0f); StartBoostChannelSyncs.Add( new Sync( StartBoostChannelHandle, BASSSync.BASS_SYNC_END, (handle, channel, data, user) => { if (BoostChannelHandle != null) { var volume = 0.0f; Bass.BASS_ChannelGetAttribute(StartBoostChannelHandle.Handle, BASSAttribute.BASS_ATTRIB_VOL, ref volume); if (volume > 0.0f) { Bass.BASS_ChannelSetAttribute(BoostChannelHandle.Handle, BASSAttribute.BASS_ATTRIB_VOL, MaximumVolume); } Bass.BASS_ChannelPlay(BoostChannelHandle.Handle, true); } } ) ); }
public void Dispose() { StartLoopChannelSyncs.ForEach(sync => sync.Dispose()); StartBoostChannelSyncs.ForEach(sync => sync.Dispose()); StartJumpChannelSyncs.ForEach(sync => sync.Dispose()); StartFlightChannelSyncs.ForEach(sync => sync.Dispose()); LoopChannelSyncs.ForEach(sync => sync.Dispose()); JumpChannelSyncs.ForEach(sync => sync.Dispose()); FlightChannelSyncs.ForEach(sync => sync.Dispose()); StartLoopChannelHandle?.Dispose(); StartBoostChannelHandle?.Dispose(); StartJumpChannelHandle?.Dispose(); StartFlightChannelHandle?.Dispose(); LoopChannelHandle?.Dispose(); JumpChannelHandle?.Dispose(); FlightChannelHandle?.Dispose(); }