Beispiel #1
0
        public PassthroughSlider(string id, Beatmap amap) : base(id, amap)
        {
            if (controlpoints.Length != 2)
            {
                throw new ArgumentException("Error: Passthrough slider does not have 2 control points\n" +
                                            "controlpoints.Length=" + controlpoints.Length);
            }

            Point initialcoord = new Point();

            initialcoord.x = Int32.Parse(HitObjectParser.GetProperty(id, "x"));
            initialcoord.y = Int32.Parse(HitObjectParser.GetProperty(id, "y"));

            double length = Math.Round(Double.Parse(HitObjectParser.GetProperty(id, "pixelLength"), CultureInfo.InvariantCulture), 4);

            curve = new CircleCurve(initialcoord, controlpoints[0], controlpoints[1], length);
        }
Beispiel #2
0
        private void generateCurve()
        {
            switch (CurveType)
            {
            case SliderCurveType.Catmull:
                if (controlPoints.Count == 1)
                {
                    goto case SliderCurveType.Linear;
                }
                curve = generateCatmullCurve();
                break;

            case SliderCurveType.Bezier:
                if (controlPoints.Count == 1)
                {
                    goto case SliderCurveType.Linear;
                }
                curve = generateBezierCurve();
                break;

            case SliderCurveType.Perfect:
                if (controlPoints.Count > 2)
                {
                    goto case SliderCurveType.Bezier;
                }
                if (controlPoints.Count < 2 ||
                    !CircleCurve.IsValid(PlayfieldPosition, controlPoints[0].PlayfieldPosition, controlPoints[1].PlayfieldPosition))
                {
                    goto case SliderCurveType.Linear;
                }
                curve = generateCircleCurve();
                break;

            case SliderCurveType.Linear:
            default:
                curve = generateLinearCurve();
                break;
            }
            playfieldTipPosition = curve.PositionAtDistance(Length);
        }