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); }
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); }