Пример #1
0
 private float RandomDelay()
 {
     return(MathfExtended.RoundToMultiple(
                Random.Range(
                    Mathf.Max(0f, delayBeats - delayRandomRange),
                    delayBeats + delayRandomRange),
                0.125f));
 }
Пример #2
0
    private IEnumerator CoFade(Fadeable f, float time, float start, float end, int fadingPosition, FadeType fadeType, float pow)
    {
        if (time == 0)
        {
            yield break;
        }
        float eTime = 0f;

        f.fading[fadingPosition] = true;
        f.FadeLevel = start;

        while (eTime < time && f.fading[fadingPosition])
        {
            eTime += Time.deltaTime;
            switch (fadeType)
            {
            case FadeType.Lin:
                f.FadeLevel = Mathf.Lerp(start, end, eTime / time);
                break;

            case FadeType.Exp:
                f.FadeLevel = MathfExtended.SteepErp(start, end, pow, eTime / time);
                break;

            case FadeType.Log:
                f.FadeLevel = MathfExtended.ShallowErp(start, end, pow, eTime / time);
                break;
            }
            yield return(0);
        }

        if (f.fading[fadingPosition])
        {
            f.FadeLevel = end;
            f.fading[fadingPosition] = false;
        }
    }
Пример #3
0
    public IEnumerator WaitForBeatValue(Metronome metro, float beat)
    {
        float totalBeats = metro.currentTiming.totalBeats;
        float start      = totalBeats % beat;

        // if things seem out of time:
        //while (metro.currentTiming.totalBeats % beat >= start) {
        while (metro.currentTiming.totalBeats % beat > start)
        {
            yield return(null);
        }

        if (doNotOverlap)
        {
            // This ensures that we don't overlap another clip if the two were triggered close together
            float snap = MathfExtended.RoundToMultiple(metro.currentTiming.totalBeats, beat);
            while (beatWithClips.Contains(snap))
            {
                snap = MathfExtended.RoundToMultiple(metro.currentTiming.totalBeats, beat);
                yield return(null);
            }
            beatWithClips.Add(snap);
        }
    }
Пример #4
0
    public float Get()
    {
        if (!autoDecay)
        {
            return(Percent);
        }
        float e = 0f;

        switch (decayCurve)
        {
        case FadeType.Lin:
            e = Mathf.Lerp(0f, 1f, Percent);
            break;

        case FadeType.Exp:
            e = MathfExtended.SteepErp(0f, 1f, power, Percent);
            break;

        case FadeType.Log:
            e = MathfExtended.ShallowErp(0f, 1f, power, Percent);
            break;
        }
        return(e);
    }