public void PlayHitEffect(float stopBeat)
 {
     if (particles == null)
     {
         return;
     }
     particles.Play();
     particleStopTime = BeatTime.timeOnBeat(stopBeat);
 }
Example #2
0
    public void PlaySynchronized(int trackNum, float beginBeat, float endBeat = float.PositiveInfinity)
    {
        if (trackNum < 0 || trackNum >= playableTracks.Length)
        {
            return;
        }

        double beginTime = BeatTime.timeOnBeat(beginBeat);
        double endTime   = float.IsInfinity(endBeat) ? float.PositiveInfinity : BeatTime.timeOnBeat(endBeat);
        double length    = endTime - beginTime;

        AudioSource track = playableTracks[trackNum];

        track.volume = volumePlaySynchronized;

        double bgmTime = BeatTime.audioTime;

        if (beginTime > bgmTime)
        {
            track.SetScheduledEndTime(0);
            double beginDspTime = BeatTime.dspTime + (beginTime - bgmTime);
            if (isSynchronized && track.isPlaying)
            {
                track.SetScheduledEndTime(beginDspTime + length);
            }
            else
            {
                track.time = (float)beginTime;
                track.PlayScheduled(beginDspTime);
                track.SetScheduledEndTime(beginDspTime + length);
            }
        }
        else
        {
            track.SetScheduledEndTime(0);
            if (!track.isPlaying)
            {
                track.Play();
            }
            if (!isSynchronized)
            {
                track.time = (float)BeatTime.audioTime;
            }
            track.SetScheduledEndTime(BeatTime.dspTime + length);
        }

        isSynchronized = true;
    }
Example #3
0
    // Update is called once per frame
    void Update()
    {
        float deltaTime = Time.deltaTime;

        for (int i = 0; i < maxRippleCount; ++i)
        {
            ripplePositions[i] += deltaTime * rippleSpeed;
        }

        int currBeat = BeatTime.numBeat;

        if (currBeat >= 0 && currBeat != lastBeat)
        {
            if (currBeat == lastBeat + 1 && currBeat % beatPerRipple == 0)
            {
                AddRipple((float)(BeatTime.audioTime - BeatTime.timeOnBeat(currBeat)));
            }
            lastBeat = currBeat;
        }

        material.SetFloatArray("_RipplePositions", ripplePositions);
    }
Example #4
0
    public void PlayNow(int trackNum, float beginBeat, float endBeat)
    {
        if (trackNum < 0 || trackNum >= playableTracks.Length)
        {
            return;
        }

        double beginTime = BeatTime.timeOnBeat(beginBeat);
        double endTime   = BeatTime.timeOnBeat(endBeat);
        double length    = endTime - beginTime;

        AudioSource track = playableTracks[trackNum];

        track.volume = volumePlayNow;

        track.SetScheduledEndTime(0);
        track.time = (float)beginTime;
        track.Play();
        track.SetScheduledEndTime(BeatTime.dspTime + length);

        isSynchronized = false;
    }