private void DrawRoomObjects(string type, DungeonRoom room, Vector3 offset)
    {
        List <DungeonRoomObject> objs    = room.roomObjects;
        PlanetVisualData         dataSet = GetVisualDataSet(type);

        //GameObject puzzleHolder = new GameObject("Block push puzzle holder");
        //Rigidbody2D rb = puzzleHolder.AddComponent<Rigidbody2D>();
        //rb.gravityScale = 0f;
        //rb.bodyType = RigidbodyType2D.Static;
        //puzzleHolder.AddComponent<CompositeCollider2D>();
        //puzzleHolder.transform.parent = objectParent;

        for (int i = 0; i < objs.Count; i++)
        {
            DungeonRoomObject obj = objs[i];
            if (obj.IsCreated)
            {
                continue;
            }

            string  objName = obj.ObjectName;
            Vector3 pos     = obj.RoomSpacePosition + offset;
            DungeonRoomObjectComponent newObj = GetObjectToSpawn(objName);
            if (newObj == null)
            {
                continue;
            }
            newObj.Setup(this, obj);
            newObj.transform.parent = obj.IsPersistent ? null : objectParent;
            if (obj.IsPersistent)
            {
                obj.IsCreated = true;
            }
        }
    }
    private void DrawTiles(string type, DungeonRoom room, Vector2 offset)
    {
        PlanetVisualData       dataSet = GetVisualDataSet(type);
        List <DungeonRoomTile> tiles   = room.Tiles;

        for (int i = 0; i < tiles.Count; i++)
        {
            CreateTile(tiles[i].Position.x + (int)offset.x,
                       tiles[i].Position.y + (int)offset.y,
                       tiles[i].type, dataSet);
        }
    }
    private void CreateTile(int x, int y, DungeonRoomTileType tileType,
                            PlanetVisualData dataSet)
    {
        Vector3Int position = new Vector3Int(x, y, 0);

        switch (tileType)
        {
        case DungeonRoomTileType.Wall:
            wallMap.SetTile(position, dataSet.wallTile);
            break;

        case DungeonRoomTileType.Floor:
            floorMap.SetTile(position, dataSet.floorTile);
            float randomVal = UnityEngine.Random.value;
            if (randomVal <= dataSet.detailChance)
            {
                floorDetailMap.SetTile(position, dataSet.floorDetailTile);
            }
            break;
        }
    }