예제 #1
0
    private void ScheduleBeats()
    {
        Appear();
        var startTime = AudioManager.Instance.beatTravelTime - AudioManager.Instance.startingDelay;

        while (startTime > 0)
        {
            var time = AudioSettings.dspTime - startTime;
            CreateBeat(leftSpawnPoint, time);
            CreateBeat(rightSpawnPoint, time);
            bonkLeft   = !bonkLeft;
            nextIsOdd  = !nextIsOdd;
            startTime -= AudioManager.Instance.beatDelay;
        }

        var leftBeatEvent =
            new AudioManager.PulseEventSubscriber(this, CreateLeftBeat, -startTime)
        {
            ignoreMusicStartTime = true
        };
        var rightBeatEvent =
            new AudioManager.PulseEventSubscriber(this, CreateRightBeat, -startTime)
        {
            ignoreMusicStartTime = true
        };
        var changeBonkEvent =
            new AudioManager.PulseEventSubscriber(this, ChangeBonk, -startTime, 0.1f)
        {
            ignoreMusicStartTime = true
        };

        AudioManager.Instance.pulseSubscribers.Add(leftBeatEvent);
        AudioManager.Instance.pulseSubscribers.Add(rightBeatEvent);
        AudioManager.Instance.pulseSubscribers.Add(changeBonkEvent);
    }
예제 #2
0
 public void Unsubscribe()
 {
     if (pulseEventSubscriber != null)
     {
         AudioManager.Instance.pulseSubscribers.Remove(pulseEventSubscriber);
         pulseEventSubscriber = null;
     }
 }
예제 #3
0
 public void Subscribe()
 {
     if (AudioManager.Instance.IsCurrentlyPlaying)
     {
         pulseEventSubscriber = new AudioManager.PulseEventSubscriber(this, SoundlessBeat);
         AudioManager.Instance.pulseSubscribers.Add(pulseEventSubscriber);
     }
 }
예제 #4
0
 private void UnsubscribeFromBeat()
 {
     if (pulseEventSubscriber != null)
     {
         AudioManager.Instance.pulseSubscribers.Remove(pulseEventSubscriber);
         pulseEventSubscriber = null;
     }
 }
예제 #5
0
    private void SchedulePulse()
    {
        var bumpEvent =
            new AudioManager.PulseEventSubscriber(this, EqualizerBump, AudioManager.Instance.startingDelay);
        var pulseEvent =
            new AudioManager.PulseEventSubscriber(this, Pulse, AudioManager.Instance.startingDelay);

        AudioManager.Instance.pulseSubscribers.Add(bumpEvent);
        AudioManager.Instance.pulseSubscribers.Add(pulseEvent);
    }
예제 #6
0
    private void SubscribeToBeat()
    {
        if (!AudioManager.Instance.IsCurrentlyPlaying)
        {
            return;
        }

        if (pulseEventSubscriber == null)
        {
            pulseEventSubscriber = new AudioManager.PulseEventSubscriber(this, Pulse);
            AudioManager.Instance.pulseSubscribers.Add(pulseEventSubscriber);
        }
    }
예제 #7
0
    public void Unsubscribe()
    {
        if (pulseEventSubscriber != null)
        {
            if (AudioManager.Instance.IsCurrentlyPlaying)
            {
                AudioManager.Instance.pulseSubscribers.Remove(pulseEventSubscriber);
            }
            else
            {
                AudioManager.Instance.pulseSubscribersForNextPlay.Remove(pulseEventSubscriber);
            }

            pulseEventSubscriber = null;
        }
    }
예제 #8
0
 private void Subscribe()
 {
     if (pulseEventSubscriber == null)
     {
         pulseEventSubscriber =
             new AudioManager.PulseEventSubscriber(this, Pulse);
         if (AudioManager.Instance.IsCurrentlyPlaying)
         {
             AudioManager.Instance.pulseSubscribers.Add(pulseEventSubscriber);
         }
         else
         {
             AudioManager.Instance.pulseSubscribersForNextPlay.Add(pulseEventSubscriber);
         }
     }
 }