public static void Triangulate(PolygonSet ps) { foreach (Polygon p in ps.Polygons) { Triangulate(p); } }
public static void Triangulate(PolygonSet ps) { TriangulationContext tcx = CreateContext(_defaultAlgorithm); foreach (Polygon p in ps.Polygons) { Triangulate(p); } }
public static void Triangulate(PolygonSet ps) { //TriangulationContext tcx = CreateContext(_defaultAlgorithm); foreach (Polygon p in ps.Polygons) { Triangulate(p); } }
public static void Triangulate(PolygonSet ps) { TriangulationContext tcx = CreateContext(_defaultAlgorithm); foreach (Polygon p in ps.Polygons) { tcx.PrepareTriangulation(p); Triangulate(tcx); tcx.Clear(); } }
public static void triangulate(PolygonSet ps) { TriangulationContext tcx = createContext(_defaultAlgorithm); foreach (Polygon p in ps.getPolygons()) { tcx.prepareTriangulation(p); triangulate(tcx); tcx.clear(); } }
public static void Triangulate(PolygonSet ps) { foreach (Polygon p in ps.Polygons) { try { Triangulate(p); } catch (System.Exception e) { UnityEngine.Debug.LogError("Triangulation Exception: " + e.Message); } } }
static void InsertIntoSet(PolygonSet set, Polygon poly) { //first test to see if any of the existing polygons are inside our input. for (int i = set.Polygons.Count - 1; i >= 0; i--) { if (TryInsertHole(poly, set.Polygons[i])) set.Polygons.RemoveAt(i); //we go from the end, so the indices remain valid. } foreach (var item in set.Polygons) { if (TryInsertHole(item, poly)) { return; //nothing more to do. } } set.Add(poly); }
static PolygonSet DeNestHoles(PolygonSet set) { PolygonSet output = new PolygonSet(); foreach (var polygon in set.Polygons) { output.Polygons.AddRange(DeNestHoles(polygon)); } return output; }
void ConvertToMesh(PolygonSet polySet, float height) { Dictionary<TriangulationPoint, int> pointIndices = new Dictionary<TriangulationPoint, int>(); P2T.Triangulate(polySet); foreach (var polygon in polySet.Polygons) { foreach (var triangle in polygon.Triangles) { for(int i = 2; i >= 0; i--) { var point = triangle.Points[i]; int index; if (!pointIndices.ContainsKey(point)) { index = vertices.Count; pointIndices[point] = index; vertices.Add(new Vector3(point.Xf, height, point.Yf)); uvs.Add(new Vector2(point.Xf / GameMap.tileWidth, point.Yf / GameMap.tileWidth)); } else index = pointIndices[point]; triangles.Add(index); } } } }