public TileInfo GetTileAtPosition(Vector2 pos, TileLayer l)
        {
            int           x, y, tileId = -1;
            TileDirection dir = TileDirection.Up;

            if (map.GetTileAtPosition(pos, out x, out y))
            {
                tileId = map.GetTile(x, y, (int)l);
            }
            tk2dTileFlags flags = map.GetTileFlags(x, y, (int)l);

            dir = (TileFlagsToTileDirection(flags));

            TileInfo tile = new TileInfo();

            tile.worldPos = map.GetTilePosition(x, y);
            switch (tileId)
            {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 32:
            case 33:
            case 34:
            case 35:
            case 36:
            case 64:
            case 65:
            case 66:
                tile.type = TileType.Wall;
                break;

            case 8:
                tile.type = TileType.Lava;
                break;

            default:
                tile.type = TileType.Empty;
                break;
            }
            if (tileId == spikeTile)
            {
                tile.type = TileType.Spike;
            }
            print(tile.type);
            tile.direction = dir;
            return(tile);
        }