private void PlayWave(PlayWaveEvent evt, float?prevVolume = null, float?prevPitch = null) { SoundEffectInstance sfi = evt.GenerateInstance( INTERNAL_activeSound.Volume, INTERNAL_activeSound.Pitch, INTERNAL_eventLoops[evt], prevVolume, prevPitch ); if (sfi != null) { if (INTERNAL_isPositional) { sfi.Apply3D(INTERNAL_listener, INTERNAL_emitter); } foreach (uint curDSP in INTERNAL_activeSound.DSPCodes) { // FIXME: This only applies the last DSP! sfi.INTERNAL_applyReverb( INTERNAL_baseEngine.INTERNAL_getDSP(curDSP) ); } INTERNAL_instancePool.Add(sfi); INTERNAL_instanceVolumes.Add(sfi.Volume); INTERNAL_instancePitches.Add(sfi.Pitch); INTERNAL_waveEventSounds.Add(sfi, evt); INTERNAL_rpcTrackVolumes.Add(1.0f); INTERNAL_rpcTrackPitches.Add(0.0f); sfi.Play(); } }
private void INTERNAL_setupSounds() { INTERNAL_activeSound.GenerateInstances(INTERNAL_instancePool, INTERNAL_instanceVolumes); foreach (uint curDSP in INTERNAL_activeSound.DSPCodes) { DSPEffect handle = INTERNAL_baseEngine.INTERNAL_getDSP(curDSP); foreach (SoundEffectInstance sfi in INTERNAL_instancePool) { // FIXME: This only applies the last DSP! sfi.INTERNAL_applyEffect(handle); } } }
internal void PlayWave( EventInstance eventInstance, double?prevVolume = null, short?prevPitch = null ) { PlayWaveEventInstance playWaveEventInstance = (PlayWaveEventInstance)eventInstance; PlayWaveEvent evt = (PlayWaveEvent)eventInstance.Event; double finalVolume; short finalPitch; SoundEffectInstance sfi = evt.GenerateInstance( INTERNAL_activeSound.Sound.Volume, INTERNAL_activeSound.Sound.Pitch, playWaveEventInstance.LoopCount, prevVolume, prevPitch, out finalVolume, out finalPitch ); if (sfi != null) { if (INTERNAL_isPositional) { sfi.Apply3D(INTERNAL_listener, INTERNAL_emitter); } foreach (uint curDSP in INTERNAL_activeSound.Sound.DSPCodes) { // FIXME: This only applies the last DSP! sfi.INTERNAL_applyReverb( INTERNAL_baseEngine.INTERNAL_getDSP(curDSP) ); } INTERNAL_instancePool.Add(sfi); INTERNAL_instanceVolumes.Add(finalVolume); INTERNAL_instancePitches.Add(finalPitch); INTERNAL_playWaveEventBySound.Add(sfi, playWaveEventInstance); INTERNAL_rpcTrackVolumes.Add(0.0f); INTERNAL_rpcTrackPitches.Add(0.0f); sfi.Play(); } }