diff --git a/Assets/Scripts/DroppingPaint.cs b/Assets/Scripts/DroppingPaint.cs index 2ac8f4a..d243fe8 100644 --- a/Assets/Scripts/DroppingPaint.cs +++ b/Assets/Scripts/DroppingPaint.cs @@ -62,28 +62,29 @@ namespace UltraCombos var center = new Vector2(px, py); var minDist = size / segments * distanceMinMax.x; var maxDist = size / segments * distanceMinMax.y; - var index = 0; - foreach (var points in paints) + + for (int i = 0; i < paints.Count; i++) { + var points = paints[i]; var pre = points.Select(p => ApplyPaintDrop(p, center, r)).ToArray(); - var incs = pre.Select((p, i) => + var incs = pre.Select((p, k) => { - var dist = (p - pre[(i + 1) % pre.Length]).magnitude; + var dist = (p - pre[(k + 1) % pre.Length]).magnitude; return dist < minDist ? 0 : Mathf.CeilToInt(dist / minDist); }).ToArray(); var newPoints = new List(); - for (int i = 0; i < points.Count; i++) + for (int j = 0; j < points.Count; j++) { - var inc = incs[i]; + var inc = incs[j]; if (inc == 0) { - newPoints.Add(points[i]); + newPoints.Add(points[j]); } else { - var p1 = points[i]; - var p2 = points[(i + 1) % points.Count]; + var p1 = points[j]; + var p2 = points[(j + 1) % points.Count]; for (int k = 0; k < inc; k++) { var p = Vector2.Lerp(p1, p2, (float)k / inc); @@ -93,15 +94,13 @@ namespace UltraCombos } points.Clear(); points.AddRange(newPoints); - smoothedPaints[index].Clear(); - smoothedPaints[index].AddRange(newPoints); + smoothedPaints[i].Clear(); + smoothedPaints[i].AddRange(newPoints); - for (int i = 0; i < points.Count; i++) + for (int j = 0; j < points.Count; j++) { - points[i] = ApplyPaintDrop(points[i], center, r); + points[j] = ApplyPaintDrop(points[j], center, r); } - - index++; } paints.Add(circle); @@ -163,33 +162,7 @@ namespace UltraCombos } var edge = c + (p - c) * (r / d + 0.002f); - return ApplyPaintDrop(edge, c, r); - } - - private List ResamplePoints(List points, float minSpacing, float maxSpacing) - { - List newPoints = new List(); - int count = points.Count; - - for (int i = 0; i < count; i++) - { - Vector2 p1 = points[i]; - Vector2 p2 = points[(i + 1) % count]; - float dist = Vector2.Distance(p1, p2); - - newPoints.Add(p1); - - if (dist > maxSpacing) - { - int numNewPoints = Mathf.FloorToInt(dist / minSpacing); - for (int j = 1; j <= numNewPoints; j++) - { - float t = j / (float)(numNewPoints + 1); - newPoints.Add(Vector2.Lerp(p1, p2, t)); - } - } - } - return newPoints; + return ApplyPaintDrop(edge, c, r); } } } \ No newline at end of file