private IEnumerator RoundTransitionSmoothingEffect(OnBeatCallback onTransitionCallback, bool transitionIntensity) { yield return(new WaitForSecondsRealtime(.2f)); float standardInDuration = 2.0f; float standardOutDuration = 3f; FadeInCalls(standardInDuration); Source.PlayOneShot(bootstrapper.cont.TransitionTrack[0], 2f); var snapshot = bootstrapper.musicMixer.FindSnapshot("RoundEnding"); snapshot.TransitionTo(standardInDuration); yield return(new WaitForSecondsRealtime(standardInDuration)); onTransitionCallback(); if (transitionIntensity) { currentActiveTrack = (currentActiveTrack + 1) % trackContainer.tracks.Length; currentBeat = 0; timeBetweenBeats = 60f / trackContainer.bpmValues[currentActiveTrack]; Source.clip = trackContainer.tracks[currentActiveTrack]; Source.Play(); } snapshot = bootstrapper.musicMixer.FindSnapshot("Main"); snapshot.TransitionTo(standardOutDuration); FadeOutCalls(1f); }
public void RegisterCallOnNextBeat(OnBeatCallback callback, int beatsToSkip = 0, bool onBar = false) { var callbacks = onBar ? onBarCallbacks : onBeatCallbacks; if (callbacks.First == null) { callbacks.AddFirst(default(OnBeatCallback)); } var node = callbacks.First; for (int i = 0; i < beatsToSkip; i++) { if (node.Next == null) { callbacks.AddLast(default(OnBeatCallback)); } node = node.Next; } node.Value += callback; }
public void RoundTransitionSmoother(OnBeatCallback onTransitionCallback, bool transitionIntensity) { bootstrapper.StartCoroutine(RoundTransitionSmoothingEffect(onTransitionCallback, transitionIntensity)); }