void MergeCorner(ref List <Vector2> aPrevList, ref List <Vector2> aNextList) { if (aNextList.Count < 2 || aPrevList.Count < 2) { return; } float maxD = sharpCornerDistance; Vector2 pt = Ferr2D_Path.LineIntersectionPoint(aPrevList[aPrevList.Count - 2], aPrevList[aPrevList.Count - 1], aNextList[0], aNextList[1]); float d1 = (pt - aPrevList[aPrevList.Count - 1]).sqrMagnitude; float d2 = (pt - aNextList[0]).sqrMagnitude; if (d1 <= maxD * maxD) { aPrevList[aPrevList.Count - 1] = pt; } else { Vector2 tP = (pt - aPrevList[aPrevList.Count - 1]); tP.Normalize(); aPrevList[aPrevList.Count - 1] += tP * maxD; } if (d2 <= maxD * maxD) { aNextList[0] = pt; } else { Vector2 tP = (pt - aNextList[0]); tP.Normalize(); aNextList[0] += tP * maxD; } }