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); }
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); }
public bool IsCellIntersectGrid(ThingCell cell) { foreach (GridCell gridCell in gridCells) { if (gridCell.IsOccupied) { if (cell.boxCollider.bounds.Intersects(gridCell.Bounds)) { return(true); } } } return(false); }