예제 #1
0
        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();
            }
        }
예제 #2
0
        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;
        }
예제 #4
0
 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();
 }
예제 #5
0
        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;
        }