void ChangeFastToEndingTracks() { StopCoroutine(newClipWaitingRoutine); double initTime = GetTimeOfNextBar(); MusicWithInformation newTrack = GetNextBaseTrack(); foreach (AudioSource source in sources) { source.SetScheduledEndTime(initTime); } AudioSource newSource = sources[0]; newSource.clip = newTrack.clip; newSource.volume = newTrack.volume; newSource.PlayScheduled(initTime); newSource.SetScheduledStartTime(initTime); newSource.SetScheduledEndTime(initTime + newSource.clip.length); newTrack.initTime = initTime; Debug.Log("New clip interrupt! Name: " + newTrack.name); initOfNextClip = initTime; beatNumber = 0; currentlyPlayingTrack = newTrack; EventManager.Music_NewClip(initTime, newTrack.clip.length); }
public MusicWithInformation Copy() { MusicWithInformation result = new MusicWithInformation(); result.name = name; result.clip = clip; result.BPM = BPM; result.volume = volume; result.chanceWeight = chanceWeight; result.cueType = cueType; return(result); }
MusicWithInformation GetNextBaseTrack() { MusicWithInformation result = null; switch (StateManager.State) { case GameState.Beginning: Debug.Log("Flags here: " + StateManager.Flags); if (StateManager.Flags == StateFlags.ReadyForPlay) { EventManager.OnMusic_StartNewClip += QueuedEventSetStatePlaying; result = trackList[0]; CycleList(ref trackList); } else { if (beginTrackIndex > beginTracks.Count - 1) { beginTrackIndex = 0; } result = beginTracks[beginTrackIndex]; beginTrackIndex++; } break; case GameState.Playing: result = trackList[0]; CycleList(ref trackList); break; case GameState.Ended: if (endTrackIndex > endTracks.Count - 1) { result = null; } else { result = endTracks[endTrackIndex]; endTrackIndex++; } break; } if (result == null) { return(null); } return(result.Copy()); }
IEnumerator OnNewClip(double syncTime, double clipLength) { double initTime = syncTime + clipLength; yield return(new WaitForSeconds((float)(initTime - AudioSettings.dspTime - Time.fixedDeltaTime * 1.5f))); MusicWithInformation newTrack = GetNextBaseTrack(); if (newTrack != null) { AudioSource newSource = sources[0]; newSource.clip = newTrack.clip; newSource.volume = newTrack.volume; newSource.PlayScheduled(initTime); newSource.SetScheduledStartTime(initTime); newSource.SetScheduledEndTime(initTime + newSource.clip.length); newTrack.initTime = initTime; Debug.Log("New clip queued! Name: " + newTrack.name); CycleList(ref sources); initOfNextClip = initTime; beatNumber = 0; currentlyPlayingTrack = newTrack; EventManager.Music_NewClip(initTime, newTrack.clip.length); yield break; } else { Debug.Log("Returned null track"); Application.LoadLevel("StartMenu"); } }