public void PlaceTile(TileInteger tileType, Vector3Int position)
 {
     if (grid.CreateTile(tileType, position))
     {
         Tile            tile            = Instantiate(tileTypes.GetPrefab(tileType), position, Quaternion.identity);
         GameObject      tileGO          = tile.gameObject;
         MonoBehaviour[] behaviorsOnTile = tileGO.GetComponents <MonoBehaviour>();
         for (int i = 0; i < behaviorsOnTile.Length; i++)
         {
             Destroy(behaviorsOnTile[i]);
         }
         Joint[] joints = tileGO.GetComponents <Joint>();
         for (int i = 0; i < joints.Length; i++)
         {
             Destroy(joints[i]);
         }
         Rigidbody rb;
         if (tileGO.TryGetComponent <Rigidbody>(out rb))
         {
             Destroy(rb);
         }
     }
     else
     {
         RangeExceeded.Invoke();
     }
 }
Example #2
0
 public Tile GetPrefab(TileInteger tile)
 {
     for (int i = 0; i < tiles.Length; i++)
     {
         if (tile == tiles[i].tileType)
         {
             return(tiles[i].tilePrefab.GetComponent <Tile>());
         }
     }
     return(null);
 }
Example #3
0
 public bool CreateTile(TileInteger tile, Vector3Int position)
 {
     if (PositionIsInsideGrid(position) && !PositionIsFilled(position))
     {
         PositionTile pTile = new PositionTile();
         pTile.position = position;
         pTile.tile     = (int)tile;
         grid.tiles.Add(pTile);
         return(true);
     }
     return(false);
 }