private IEnumerator PostCreateHoldNoteCoroutine(ArcHold note) { AdeTimingSelector.Instance.ModifyNote(note, (a) => { note.EndTiming = a; }); while (AdeTimingSelector.Instance.Enable) { yield return(null); } CommandManager.Instance.Commit(); pendingNote = null; postHoldCoroutine = null; }
private IEnumerator PostCreateArcNoteCoroutine(ArcArc arc) { AdePositionSelector.Instance.ModifyNote(arc, (a) => { arc.XStart = arc.XEnd = a.x; arc.YStart = arc.YEnd = a.y; arc.Rebuild(); }); while (AdePositionSelector.Instance.Enable) { yield return(null); } AdeTimingSelector.Instance.ModifyNote(arc, (a) => { arc.EndTiming = a; arc.Rebuild(); }); while (AdeTimingSelector.Instance.Enable) { yield return(null); } AdePositionSelector.Instance.ModifyNote(arc, (a) => { arc.XEnd = a.x; arc.YEnd = a.y; arc.Rebuild(); }); while (AdePositionSelector.Instance.Enable) { yield return(null); } CommandManager.Instance.Commit(); pendingNote = null; postArcCoroutine = null; }
private void AddNoteHandler() { if (!AdeCursorManager.Instance.IsHorizontalHit) { return; } if (skipNextClick) { skipNextClick = false; return; } Vector3 pos = AdeCursorManager.Instance.AttachedHorizontalPoint; int timing = ArcTimingManager.Instance.CalculateTimingByPosition(-pos.z * 1000) - ArcAudioManager.Instance.AudioOffset; ArcNote note = null; switch (Mode) { case ClickToCreateMode.Tap: note = new ArcTap() { Timing = timing, Track = PositionToTrack(pos.x) }; break; case ClickToCreateMode.Hold: note = new ArcHold() { Timing = timing, Track = PositionToTrack(pos.x), EndTiming = timing }; break; case ClickToCreateMode.Arc: note = new ArcArc() { Timing = timing, EndTiming = timing, Color = currentArcColor, IsVoid = currentArcIsVoid, LineType = currentArcType }; break; case ClickToCreateMode.ArcTap: note = new ArcArcTap() { Timing = timing }; break; } if (note == null) { return; } switch (Mode) { case ClickToCreateMode.Tap: CommandManager.Instance.Add(new AddArcEventCommand(note)); break; case ClickToCreateMode.Hold: case ClickToCreateMode.Arc: CommandManager.Instance.Prepare(new AddArcEventCommand(note)); break; case ClickToCreateMode.ArcTap: if (canAddArcTap) { CommandManager.Instance.Add(new AddArcTapCommand(selectedArc, note as ArcArcTap)); } else { if (selectedArc != null) { selectedArc = null; Mode = ClickToCreateMode.Idle; } } break; } if (note is ArcLongNote) { pendingNote = note as ArcLongNote; } switch (Mode) { case ClickToCreateMode.Hold: PostCreateHoldNote(note as ArcHold); break; case ClickToCreateMode.Arc: PostCreateArcNote(note as ArcArc); break; } }