Exemple #1
0
    private IEnumerator TweenVolumes()
    {
        _isTweeningRunning = true;
        int index = 0;

        while (_tweenedFolders.Count > 0)
        {
            index = 0;

            while (index < _tweenedFolders.Count)
            {
                TweenedFolder current = _tweenedFolders[index];
                current.folder.DeltaVolume += current.variationPerSecond * Time.deltaTime;
                if ((current.variationPerSecond > 0 && current.folder.DeltaVolume > current.targetDeltaVolume) ||
                    (current.variationPerSecond < 0 && current.folder.DeltaVolume < current.targetDeltaVolume))
                {
                    current.folder.DeltaVolume = current.targetDeltaVolume;
                    _tweenedFolders.Remove(current);
                }
                else
                {
                    index++;
                }
            }

            yield return(null);
        }

        _isTweeningRunning = false;
        yield break;
    }
Exemple #2
0
    public void SetDeltaVolume(eSoundFolders folders, float deltaVolume, float time)
    {
        foreach (eSoundFolders folder in _soundFolders.Keys)
        {
            if ((folders & folder) != 0)
            {
                TweenedFolder tf = _tweenedFolders.Find((TweenedFolder test) => test.folder == _soundFolders[folder]);
                if (tf == null)
                {
                    tf        = new TweenedFolder();
                    tf.folder = _soundFolders[folder];
                    _tweenedFolders.Add(tf);
                }
                tf.targetDeltaVolume  = deltaVolume;
                tf.variationPerSecond = (deltaVolume - tf.folder.DeltaVolume) / time;
            }
        }

        if (!_isTweeningRunning)
        {
            EB.Coroutines.Run(TweenVolumes());
        }
    }