Ejemplo n.º 1
0
        private void PlaySound(SoundResource sound)
        {
            // Adjust the sound back to normal settings if it is a looping sound that is already playing
            if ((currentPlayHandle != null) && currentPlayHandle.IsPlaying() && Looping)
            {
                AdjustSound(Loudness, PitchOffset);
                return;
            }

            StopSound(false);

            PlaySettings playSettings = (Looping ? PlaySettings.Looped : PlaySettings.PlayOnce);

            playSettings.DontSync   = false;
            playSettings.Loudness   = LoudnessPercentToDb(Loudness + LoudnessVariance * RandomNegOneToOne());
            playSettings.PitchShift = PitchOffset + PitchVariance * RandomNegOneToOne();

            if (Spatialized)
            {
                if (audio != null)
                {
                    currentPlayHandle = audio.PlaySoundOnComponent(sound, playSettings);
                }
                else
                {
                    currentPlayHandle = ScenePrivate.PlaySoundAtPosition(sound, ObjectPrivate.Position, playSettings);
                }
            }
            else
            {
                currentPlayHandle = ScenePrivate.PlaySound(sound, playSettings);
            }
        }
Ejemplo n.º 2
0
        private void PlaySound(SoundResource sound)
        {
            PlaySettings playSettings = PlaySettings.PlayOnce;

            playSettings.Loudness   = LoudnessPercentToDb(Loudness);
            playSettings.PitchShift = PitchVariance * RandomNegOneToOne();

            audio.PlaySoundOnComponent(sound, playSettings);
        }
Ejemplo n.º 3
0
    public override void Init()
    {
        AudioComponent audioComp = null;

        ObjectPrivate.TryGetFirstComponent(out audioComp);
        if (audioComp != null)
        {
            PlaySettings playSettings = Play_Once ? PlaySettings.PlayOnce : PlaySettings.Looped;
            playSettings.Loudness = RelativePercentToRelativeLoudnessDB(Volume_Diff_Percent);
            playSettings.DontSync = Dont_Sync;
            audioComp.PlaySoundOnComponent(Sound, playSettings);
        }
    }
Ejemplo n.º 4
0
    private void PlayNextSound()
    {
        SoundResource nextSound = AvailableSounds[NextSoundIndex];

        if (LocalAudioComponent != null)
        {
            LocalAudioComponent.PlaySoundOnComponent(nextSound, PlaySettings.PlayOnce).OnFinished(OnSoundFinished);
        }
        else
        {
            ScenePrivate.PlaySound(nextSound, PlaySettings.PlayOnce).OnFinished(OnSoundFinished);
        }
    }
Ejemplo n.º 5
0
 private void StartSound(AnimationData obj)
 {
     StopSound(obj);
     if (playHandle == null)
     {
         if (audioComp == null)
         {
             playHandle = ScenePrivate.PlaySound(Sound, playSettings);
         }
         else
         {
             playHandle = audioComp.PlaySoundOnComponent(Sound, playSettings);
         }
     }
 }
Ejemplo n.º 6
0
    public override void Init()
    {
        // Check to make sure a sound has been configured in the editor
        if (LoopingSound == null)
        {
            Log.Write("LoopingSoundComponentScript has no configured sound to play!");
            return;
        }

        if (!ObjectPrivate.TryGetFirstComponent(out _audio))
        {
            Log.Write("LoopingSoundComponentScript is on an object that does not have an audio emitter.");
            return;
        }

        ObjectPrivate.AddInteractionData addData = (ObjectPrivate.AddInteractionData)WaitFor(ObjectPrivate.AddInteraction, "Play sound", true);

        addData.Interaction.Subscribe((InteractionData data) =>
        {
            // If not sound is playing, start one up
            if (_playHandle == null)
            {
                PlaySettings playSettings = PlaySettings.Looped;
                playSettings.Loudness     = (60.0f * (Loudness / 100.0f)) - 48.0f; // Convert percentage to decibels (dB)

                _playHandle = _audio.PlaySoundOnComponent(LoopingSound, playSettings);
            }
            // Else if a sound is playing, stop it
            else
            {
                if (_playHandle.IsPlaying())
                {
                    _playHandle.Stop();
                }

                _playHandle = null;
            }
        });
    }