public int Cut(PolygonSide a, PolygonSide b, out List <MPolygon> newPolys, int vertexCount) { if (!a.SameAs(b)) { var newV1 = vertexCount; var newV2 = vertexCount + 1; var part1 = new List <int> (); var part2 = new List <int> (); var part3 = new List <int> (); if (contains(a.Reversed())) { a.Reverse(); } if (contains(b.Reversed())) { b.Reverse(); } List <int> side1 = GetSideWalk(a.right, b.left); side1.Add(newV1); side1.Add(newV2); List <int> side2 = GetSideWalk(b.right, a.left); side2.Add(newV2); side2.Add(newV1); newPolys = new List <MPolygon> (); newPolys.Add(new MPolygon(side1)); newPolys.Add(new MPolygon(side2)); return(2); } newPolys = null; return(-1); }
public int Cut(PolygonSide a, int corner, out List <MPolygon> newPolys, int vertexCount) { // Debug.Log ("Check if not contain corner"); if (!a.Contains(corner)) { // Debug.Log ("Does not contain corner"); var newV1 = vertexCount; if (contains(a.Reversed())) { a.Reverse(); } List <int> side1 = GetSideWalk(corner, a.left); side1.Add(newV1); List <int> side2 = GetSideWalk(a.right, corner); side2.Add(newV1); newPolys = new List <MPolygon> (); newPolys.Add(new MPolygon(side1)); newPolys.Add(new MPolygon(side2)); return(2); } newPolys = null; return(-1); }