public void Initialize(NavigationPolygons polygons) { Reset(); this.polygons = polygons; Tesselation(); for (int i = 0; i < this.tesselationAlgorithm.ElementCount; i++) { var v0 = this.tesselationAlgorithm.Vertices[this.tesselationAlgorithm.Elements[i * 3]].Position.ToIntPoint(); var v1 = this.tesselationAlgorithm.Vertices[this.tesselationAlgorithm.Elements[i * 3 + 1]].Position.ToIntPoint(); var v2 = this.tesselationAlgorithm.Vertices[this.tesselationAlgorithm.Elements[i * 3 + 2]].Position.ToIntPoint(); var triangle = new NavigationTriangle(v0, v1, v2); AllTriangle.Add(triangle); } // Refine(); foreach (var triangle in AllTriangle) { AddTriangleToPointMap(triangle.U, triangle); AddTriangleToPointMap(triangle.V, triangle); AddTriangleToPointMap(triangle.W, triangle); AddTriangleToPointMap(triangle.S0.Midpoint(), triangle); AddTriangleToPointMap(triangle.S1.Midpoint(), triangle); AddTriangleToPointMap(triangle.S2.Midpoint(), triangle); } }
private static void DrawPolygons(NavigationPolygons polygons, Color color) { foreach (var polygon in polygons) { DrawPolygon(polygon, color); } }
private void ProzessFloorAndStaticObjects(NavigationFloorComponent floorObject, NavigationStaticObjectComponent[] staticObjects, out NavigationPolygons staticObjectsPoly, out NavigationPolygon floorObjectsPoly) { floorObjectsPoly = ToPolygon(floorObject.gameObject, 0); staticObjectsPoly = new NavigationPolygons(); foreach (var staticObj in staticObjects) { staticObjectsPoly.Add(ToPolygon(staticObj.gameObject, 0)); } }
public AStar(NavigationMesh navMesh, NavigationPolygons constrainedEdgePolygons) { this.navMesh = navMesh; this.constrainedEdgePolygons = constrainedEdgePolygons; }