public void GenerateFloor()
        {
            var spawnManager = EnemySpawnManager.instance;

            var   renderer    = FloorPrefab.GetComponent <SpriteRenderer> ();
            float floorWidth  = GetTileWidth(renderer.sprite);
            float floorHeight = GetTileHeight(renderer.sprite);

            for (int i = 0; i < RoomSize.width; i++)
            {
                var x = RoomSize.x + i * floorWidth;
                for (int j = 0; j < RoomSize.height; j++)
                {
                    var y = RoomSize.y + j * floorHeight;

                    var position  = new Vector2(x, y);
                    var tileClone = (GameObject)Instantiate(FloorPrefab, position, Quaternion.identity);
                    tileClone.transform.SetParent(transform);

                    var index = GetSpriteIndex();
                    tileClone.GetComponent <SpriteRenderer> ().sprite = FloorSprites [index];

                    var coord = new Vector2i(i, j);

                    var tile = GetTile(tileClone);
                    tile.Coordinates      = coord;
                    tile.NormalSprite     = FloorSprites [index];
                    tile.SelectableSprite = SelectableFloorSprites.Length > 0 ? SelectableFloorSprites [index] : null;

                    SetBounds(tile);

                    if (coord.X <= enemySpawnArea.X - 1 || coord.Y <= enemySpawnArea.Y - 1 ||
                        coord.X >= (RoomSize.width - enemySpawnArea.X) || coord.Y >= (RoomSize.height - enemySpawnArea.Y))
                    {
                        tile.Selectable = false;
                        if (spawnManager)
                        {
                            spawnManager.RegisterTile(tile);
                        }
                    }
                    else
                    {
                        cells.Add(coord, tile);
                    }
                }
            }
        }
 public void Add(Wall wall, Vector2i coord)
 {
     wallList.Add(coord, wall);
     WallsInScene.Add(wall);
 }