示例#1
0
    public bool IsNextCellOccupied(ThingCell cell)
    {
        cell.transform.SetParent(gameObject.transform);

        List <DataCell> distances = new List <DataCell>();

        for (int i = 0; i < Width; i++)
        {
            for (int j = 0; j < Height; j++)
            {
                distances.Add(new DataCell()
                {
                    Distance    = Vector3.Distance(gridCells[i, j].Coordinates, cell.transform.localPosition),
                    Coordinates = new Vector2(i, j)
                });
            }
        }

        dataCell = GetMinDictance(distances);

        cell.CenterInGrids = gridCells[(int)dataCell.Coordinates.x, (int)dataCell.Coordinates.y].Coordinates;
        cell.dataCell      = dataCell;

        cell.transform.SetParent(cell.thingFullParent.transform);
        cell.transform.localPosition = cell.StartPosition;

        return(gridCells[(int)dataCell.Coordinates.x, (int)dataCell.Coordinates.y].IsOccupied);
    }
示例#2
0
    public bool IsWithinBorders(ThingCell cell)
    {
        Vector2 minBorder = new Vector2(vector3s[0].x, vector3s[0].y);
        Vector2 maxBorder = new Vector2(vector3s[2].x, vector3s[2].y);

        return(Mathf.Round(cell.boxCollider.bounds.min.x) > minBorder.x &&
               Mathf.Round(cell.boxCollider.bounds.min.y) > minBorder.y &&
               Mathf.Round(cell.boxCollider.bounds.max.x) < maxBorder.x &&
               Mathf.Round(cell.boxCollider.bounds.max.y) < maxBorder.y);
    }
示例#3
0
 public bool IsCellIntersectGrid(ThingCell cell)
 {
     foreach (GridCell gridCell in gridCells)
     {
         if (gridCell.IsOccupied)
         {
             if (cell.boxCollider.bounds.Intersects(gridCell.Bounds))
             {
                 return(true);
             }
         }
     }
     return(false);
 }