Example #1
0
        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);
                    }
                }
            }
        }
Example #3
0
 public bool IsItSafe(Cell c)
 {
     return(SafeHavens.IsSafe(c.position));
 }