public void MirrorSelectedNotes() { var selected = AdeCursorManager.Instance.SelectedNotes; List <ICommand> commands = new List <ICommand>(); foreach (var n in selected) { switch (n) { case ArcTap tap: ArcTap newtap = tap.Clone() as ArcTap; newtap.Track = 5 - newtap.Track; commands.Add(new EditArcEventCommand(tap, newtap)); break; case ArcHold hold: ArcHold newhold = hold.Clone() as ArcHold; newhold.Track = 5 - newhold.Track; commands.Add(new EditArcEventCommand(hold, newhold)); break; case ArcArc arc: ArcArc newarc = arc.Clone() as ArcArc; newarc.XStart = 1 - newarc.XStart; newarc.XEnd = 1 - newarc.XEnd; if (newarc.Color < 2) { newarc.Color = 1 - newarc.Color; } commands.Add(new EditArcEventCommand(arc, newarc)); break; } } CommandManager.Instance.Add(new BatchCommand(commands.ToArray(), "镜像")); }
public void OnTrack(InputField inputField) { if (!canEdit) { return; } try { string t = inputField.text; int track = int.Parse(t); if (track <= 0 || track >= 5) { throw new InvalidDataException("轨道只能为 1 - 4"); } List <EditArcEventCommand> commands = new List <EditArcEventCommand>(); foreach (var n in AdeCursorManager.Instance.SelectedNotes) { if (n is ArcTap) { ArcTap ne = n.Clone() as ArcTap; ne.Track = track; commands.Add(new EditArcEventCommand(n, ne)); } else if (n is ArcHold) { ArcHold ne = n.Clone() as ArcHold; ne.Track = track; commands.Add(new EditArcEventCommand(n, ne)); } } if (commands.Count == 1) { CommandManager.Instance.Add(commands[0]); } else if (commands.Count > 1) { CommandManager.Instance.Add(new BatchCommand(commands.ToArray(), "批量修改 Note")); } } catch (Exception Ex) { AdeToast.Instance.Show("赋值时出现错误"); Debug.LogException(Ex); } }
public void Remove(ArcTap tap) { tap.Destroy(); Taps.Remove(tap); }
public void Add(ArcTap tap) { tap.Instantiate(); Taps.Add(tap); tap.SetupArcTapConnection(); }
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; } }