77 lines
1.9 KiB
C#
77 lines
1.9 KiB
C#
namespace Pathfinding {
|
|
using Pathfinding.Util;
|
|
using UnityEngine;
|
|
|
|
public class NavmeshTile : INavmeshHolder {
|
|
/// <summary>Tile triangles</summary>
|
|
public int[] tris;
|
|
|
|
/// <summary>Tile vertices</summary>
|
|
public Int3[] verts;
|
|
|
|
/// <summary>Tile vertices in graph space</summary>
|
|
public Int3[] vertsInGraphSpace;
|
|
|
|
/// <summary>Tile X Coordinate</summary>
|
|
public int x;
|
|
|
|
/// <summary>Tile Z Coordinate</summary>
|
|
public int z;
|
|
|
|
/// <summary>
|
|
/// Width, in tile coordinates.
|
|
/// Warning: Widths other than 1 are not supported. This is mainly here for possible future features.
|
|
/// </summary>
|
|
public int w;
|
|
|
|
/// <summary>
|
|
/// Depth, in tile coordinates.
|
|
/// Warning: Depths other than 1 are not supported. This is mainly here for possible future features.
|
|
/// </summary>
|
|
public int d;
|
|
|
|
/// <summary>All nodes in the tile</summary>
|
|
public TriangleMeshNode[] nodes;
|
|
|
|
/// <summary>Bounding Box Tree for node lookups</summary>
|
|
public BBTree bbTree;
|
|
|
|
/// <summary>Temporary flag used for batching</summary>
|
|
public bool flag;
|
|
|
|
public NavmeshBase graph;
|
|
|
|
#region INavmeshHolder implementation
|
|
|
|
public void GetTileCoordinates (int tileIndex, out int x, out int z) {
|
|
x = this.x;
|
|
z = this.z;
|
|
}
|
|
|
|
public int GetVertexArrayIndex (int index) {
|
|
return index & NavmeshBase.VertexIndexMask;
|
|
}
|
|
|
|
/// <summary>Get a specific vertex in the tile</summary>
|
|
public Int3 GetVertex (int index) {
|
|
int idx = index & NavmeshBase.VertexIndexMask;
|
|
|
|
return verts[idx];
|
|
}
|
|
|
|
public Int3 GetVertexInGraphSpace (int index) {
|
|
return vertsInGraphSpace[index & NavmeshBase.VertexIndexMask];
|
|
}
|
|
|
|
/// <summary>Transforms coordinates from graph space to world space</summary>
|
|
public GraphTransform transform { get { return graph.transform; } }
|
|
|
|
#endregion
|
|
|
|
public void GetNodes (System.Action<GraphNode> action) {
|
|
if (nodes == null) return;
|
|
for (int i = 0; i < nodes.Length; i++) action(nodes[i]);
|
|
}
|
|
}
|
|
}
|