public bool PreProcess(IPathRequest request) { if (!_enabled) { return(false); } var grid = GridManager.instance.GetGrid(request.to); if (grid == null) { return(false); } if (SafeHavens.IsSafe(request.to)) { return(false); } var data = new EvalData(request.requesterProperties); var best = _eval.ClosestMatch(grid, request.to, data.IsItSafe, data.IsItBlocked); if (best == null) { return(false); } request.to = best.position; return(true); }
private void OnDrawGizmos() { if (!Application.isPlaying) { return; } var matrix = GridManager.instance.GetGrid(Vector3.zero).cellMatrix; var cubeSize = new Vector3(matrix.cellSize, 0.1f, matrix.cellSize); Gizmos.color = new Color(0f, 255f, 0f, 0.15f); var raw = matrix.rawMatrix; for (int x = 0; x < matrix.columns; x++) { for (int z = 0; z < matrix.rows; z++) { if (SafeHavens.IsSafe(raw[x, z].position)) { Gizmos.DrawCube(raw[x, z].position, cubeSize); } } } }
public bool IsItSafe(Cell c) { return(SafeHavens.IsSafe(c.position)); }