summaryrefslogtreecommitdiff
path: root/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Graphs/Navmesh/RecastBuilder.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Graphs/Navmesh/RecastBuilder.cs')
-rw-r--r--Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Graphs/Navmesh/RecastBuilder.cs49
1 files changed, 49 insertions, 0 deletions
diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Graphs/Navmesh/RecastBuilder.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Graphs/Navmesh/RecastBuilder.cs
new file mode 100644
index 0000000..2cd925b
--- /dev/null
+++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Graphs/Navmesh/RecastBuilder.cs
@@ -0,0 +1,49 @@
+using Pathfinding.Graphs.Navmesh.Jobs;
+
+namespace Pathfinding.Graphs.Navmesh {
+ /// <summary>Helper methods for scanning a recast graph</summary>
+ public struct RecastBuilder {
+ /// <summary>
+ /// Builds meshes for the given tiles in a graph.
+ /// Call Schedule on the returned object to actually start the job.
+ ///
+ /// You may want to adjust the settings on the returned object before calling Schedule.
+ ///
+ /// <code>
+ /// // Scans the first 6x6 chunk of tiles of the recast graph (the IntRect uses inclusive coordinates)
+ /// var graph = AstarPath.active.data.recastGraph;
+ /// var buildSettings = RecastBuilder.BuildTileMeshes(graph, new TileLayout(graph), new IntRect(0, 0, 5, 5));
+ /// var disposeArena = new Pathfinding.Jobs.DisposeArena();
+ /// var promise = buildSettings.Schedule(disposeArena);
+ ///
+ /// AstarPath.active.AddWorkItem(() => {
+ /// // Block until the asynchronous job completes
+ /// var result = promise.Complete();
+ /// TileMeshes tiles = result.tileMeshes.ToManaged();
+ /// // Take the scanned tiles and place them in the graph,
+ /// // but not at their original location, but 2 tiles away, rotated 90 degrees.
+ /// tiles.tileRect = tiles.tileRect.Offset(new Int2(2, 0));
+ /// tiles.Rotate(1);
+ /// graph.ReplaceTiles(tiles);
+ ///
+ /// // Dispose unmanaged data
+ /// disposeArena.DisposeAll();
+ /// result.Dispose();
+ /// });
+ /// </code>
+ /// </summary>
+ public static TileBuilder BuildTileMeshes (RecastGraph graph, TileLayout tileLayout, IntRect tileRect) {
+ return new TileBuilder(graph, tileLayout, tileRect);
+ }
+
+ /// <summary>
+ /// Builds nodes given some tile meshes.
+ /// Call Schedule on the returned object to actually start the job.
+ ///
+ /// See: <see cref="BuildTileMeshes"/>
+ /// </summary>
+ public static JobBuildNodes BuildNodeTiles (RecastGraph graph, TileLayout tileLayout) {
+ return new JobBuildNodes(graph, tileLayout);
+ }
+ }
+}