private void UpdatePosition() { if (!AdeCursorManager.Instance.IsVerticalHit) { return; } Vector3 pos = AdeCursorManager.Instance.AttachedVerticalPoint; currentSetter?.Invoke(new Vector2(ArcAlgorithm.WorldXToArc(pos.x), ArcAlgorithm.WorldYToArc(pos.y))); if (Mouse.current.leftButton.wasPressedThisFrame) { EndModify(); } }
public void AddArcTap(ArcArcTap arctap) { if (arctap.Timing > EndTiming || arctap.Timing < Timing) { throw new ArgumentOutOfRangeException("ArcTap 时间不在 Arc 范围内"); } ArcTimingManager timingManager = ArcTimingManager.Instance; int offset = ArcAudioManager.Instance.AudioOffset; arctap.Instantiate(this); float t = 1f * (arctap.Timing - Timing) / (EndTiming - Timing); arctap.LocalPosition = new Vector3(ArcAlgorithm.ArcXToWorld(ArcAlgorithm.X(XStart, XEnd, t, LineType)), ArcAlgorithm.ArcYToWorld(ArcAlgorithm.Y(YStart, YEnd, t, LineType)) - 0.5f, -timingManager.CalculatePositionByTimingAndStart(Timing + offset, arctap.Timing + offset) / 1000f - 0.6f); ArcTaps.Add(arctap); }
private void UpdateInfo() { EnableInfo = EnableVertical || EnableHorizontal; string content = string.Empty; if (!EnableInfo) { return; } content += $"音乐时间: {AttachedTiming + ArcAudioManager.Instance.AudioOffset}\n"; content += $"谱面时间: {AttachedTiming}"; if (EnableVertical) { Vector3 pos = AttachedVerticalPoint; content += $"\n坐标: ({ArcAlgorithm.WorldXToArc(pos.x).ToString("f2")},{ArcAlgorithm.WorldYToArc(pos.y).ToString("f2")})"; } if (AdeClickToCreate.Instance.Enable && AdeClickToCreate.Instance.Mode != ClickToCreateMode.Idle) { content += $"\n点立得: {AdeClickToCreate.Instance.Mode.ToString()}"; if (AdeClickToCreate.Instance.Mode == ClickToCreateMode.Arc) { content += $"\n{AdeClickToCreate.Instance.CurrentArcColor}/{AdeClickToCreate.Instance.CurrentArcIsVoid}/{AdeClickToCreate.Instance.CurrentArcType}"; } } if (rangeSelectPosition != null) { content += $"\n段落选择起点: {rangeSelectPosition}"; } if (SelectedNotes.Count == 1 && SelectedNotes[0] is ArcArc) { ArcArc arc = SelectedNotes[0] as ArcArc; float p = (AttachedTiming - arc.Timing) / (arc.EndTiming - arc.Timing); if (p >= 0 && p <= 1) { float x = ArcAlgorithm.X(arc.XStart, arc.XEnd, p, arc.LineType); float y = ArcAlgorithm.Y(arc.YStart, arc.YEnd, p, arc.LineType); content += $"\nArc: {(p * 100).ToString("f2")}%, {x.ToString("f2")}, {y.ToString("f2")}"; } } InfoText.text = content; }
private void UpdateVertical() { verticalInUse = 0; if (EnableVertical && AdeCursorManager.Instance.EnableVerticalPanel) { foreach (var t in verticalXTimings) { LineRenderer l = GetVerticalInstance(); l.DrawLine(new Vector3(ArcAlgorithm.ArcXToWorld(t), 0), new Vector3(ArcAlgorithm.ArcXToWorld(t), 5.5f)); l.endColor = l.startColor = VerticalXColor; l.enabled = true; } foreach (var t in verticalYTimings) { LineRenderer l = GetVerticalInstance(); l.DrawLine(new Vector3(-8.5f, ArcAlgorithm.ArcYToWorld(t)), new Vector3(8.5f, ArcAlgorithm.ArcYToWorld(t))); l.endColor = l.startColor = VerticalYColor; l.enabled = true; } } HideExceededVerticalInstance(); }
private void UpdateArcTapCursor() { var timingGroup = AdeTimingEditor.Instance.currentTimingGroup; if (selectedArc != null && selectedArc.Instance == null) { selectedArc = null; if (Mode == ClickToCreateMode.ArcTap) { Mode = ClickToCreateMode.Idle; } return; } if (Mode != ClickToCreateMode.ArcTap || selectedArc == null) { AdeCursorManager.Instance.EnableArcTapCursor = false; AdeCursorManager.Instance.EnableVerticalPanel = false; return; } Vector3 pos = AdeCursorManager.Instance.AttachedHorizontalPoint; int timing = ArcTimingManager.Instance.CalculateTimingByPosition(-pos.z * 1000, timingGroup) - ArcAudioManager.Instance.AudioOffset; canAddArcTap = selectedArc.Timing <= timing && selectedArc.EndTiming >= timing; AdeCursorManager.Instance.EnableArcTapCursor = canAddArcTap; AdeCursorManager.Instance.EnableVerticalPanel = canAddArcTap; if (!canAddArcTap) { return; } ArcTimingManager timingManager = ArcTimingManager.Instance; float t = 1f * (timing - selectedArc.Timing) / (selectedArc.EndTiming - selectedArc.Timing); Vector2 gizmo = new Vector3(ArcAlgorithm.ArcXToWorld(ArcAlgorithm.X(selectedArc.XStart, selectedArc.XEnd, t, selectedArc.LineType)), ArcAlgorithm.ArcYToWorld(ArcAlgorithm.Y(selectedArc.YStart, selectedArc.YEnd, t, selectedArc.LineType)) - 0.5f); AdeCursorManager.Instance.ArcTapCursorPosition = gizmo; }