private void SmoothPatches(Polygon vertices, float smoothAmount) { for (var i = 0; i < vertices.Vertices.Count; i++) { var point = vertices.Vertices[i]; var prev = vertices.GetPreviousVertex(point); var next = vertices.GetNextVertex(point); var smoothed = GeometryHelpers.SmoothVertex(point, prev, next, smoothAmount); var affected = Patches.Where(p => p.Shape.Vertices.Contains(point)).ToList(); foreach (var patch in affected) { patch.Shape.ReplaceVertex(point, smoothed); } vertices.Vertices[i] = smoothed; } }