Beispiel #1
0
Datei: Cue.cs Projekt: raizam/FNA
        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();
            }
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
        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();
            }
        }