// Update is called once per frame void Update() { // Wait until the scene is fully loaded if (!transitionFinished) { return; } //if (Input.GetKeyDown(KeyCode.J)) // activeNotes.ForEach(x => x.transform.position -= new Vector3(0, 0, 0.5f)); //var inactive = activeNotes.Where(x => x.transform.position.z < CullLocation); //for (int i = 0; i < inactive.Count(); i++) //{ // inactive.ElementAt(i).SetActive(false); // activeNotes.Remove(inactive.ElementAt(i)); //} // Draw notes (always) if (Globals.CurrentNoteCollection != null) { var currentBeat = Globals.MusicManager.GetCurrentBeat(); var motions = Globals.CurrentNoteCollection.Motions.Where(p => p.BeatLocation > currentBeat - 6 && p.BeatLocation < currentBeat + 16); var holds = Globals.CurrentNoteCollection.Holds.Where(p => p.StartNote.BeatLocation > currentBeat - 16 && p.StartNote.BeatLocation < currentBeat + 16); var notes = Globals.CurrentNoteCollection.Steps.Where(p => p.BeatLocation > currentBeat - 6 && p.BeatLocation < currentBeat + 16); var marks = Globals.CurrentNoteCollection.Markers.Where(p => p.BeatLocation > currentBeat - 6 && p.BeatLocation < currentBeat + 16); foreach (var mark in marks) { mark.Draw(currentBeat); } foreach (var motion in motions) { motion.Draw(currentBeat); } foreach (var hold in holds) { hold.Draw(currentBeat); } foreach (var note in notes) { note.Draw(currentBeat); } } // Draw foot markers TouchCollection.Draw(); // Update UI CanvasObj.transform.Find("ScrollNumMajor").gameObject.SetText(((int)Math.Floor(GameState.ScrollSpeed)).ToString("D1")); CanvasObj.transform.Find("ScrollNumMinor").gameObject.SetText("." + ((int)((GameState.ScrollSpeed - Math.Truncate(GameState.ScrollSpeed)) * 10)).ToString("D1")); var score = Globals.CurrentNoteCollection.CurrentScore / Globals.CurrentNoteCollection.TotalNotes * 100.00f; CanvasObj.transform.Find("ScoreNumMajor").gameObject.SetText(((int)Math.Floor(score)).ToString("D3")); CanvasObj.transform.Find("ScoreNumMinor").gameObject.SetText("." + ((int)((score - Math.Truncate(score)) * 1000)).ToString("D3") + "%"); CanvasObj.transform.Find("AutoModeLabel").gameObject.SetActive(GameState.CurrentSettings.AutoSetting != Settings.AutoMode.Off); // Transitions float ratio; switch (GameState.TransitionState) { case TransitionState.LeavingLoadScreen: SetFields(); ratio = DrawLoadingScreenTransition(false); if (ratio >= 1.0f) { GameState.TransitionState = TransitionState.ScreenActive; if (!Globals.MusicManager.IsPlaying) // UNDO LATER { Globals.MusicManager.Play(); } } break; case TransitionState.ScreenActive: transitionStartTime = -1; if (Globals.MusicManager.IsFinished) { Globals.CurrentNoteCollection.SongEnd = SongEndReason.Cleared; GameState.TransitionState = TransitionState.EnteringLoadingScreen; } break; case TransitionState.EnteringLoadingScreen: ratio = DrawLoadingScreenTransition(true); if (ratio <= 0.0f) { GameState.TransitionState = TransitionState.SwitchingScreens; GameState.Destination = Mode.Results; loadStarted = false; } break; case TransitionState.SwitchingScreens: loadingLeft.anchoredPosition = new Vector2(-200, 0); loadingRight.anchoredPosition = new Vector2(200, 0); if (!loadStarted) { if (Globals.MusicManager.IsPlaying) { Globals.MusicManager.Pause(); } StartCoroutine(Util.SwitchSceneAsync()); loadStarted = true; } break; default: break; } }