public void UpdateTileAsset(Int2 posGrid)
        {
            ShipGrid.Tile tile                 = ShipGrid.GetInstance().GetTile(posGrid);
            Int2          posSpriteSheet       = AssetManager.GetInstance().GetAssetForTile(tile, sorting);
            Vector2       posTexture           = new Vector2(posSpriteSheet.x * PIXELS_PER_UNIT, posSpriteSheet.y * PIXELS_PER_UNIT);
            Vector2       spriteSheetTilesSize = AssetManager.GetInstance().GetSpriteSheetTilesSize();

            Vector2 assetUVMin = new Vector2();

            assetUVMin.x = posTexture.x / spriteSheetTilesSize.x;
            assetUVMin.y = posTexture.y / spriteSheetTilesSize.y;

            Vector2 assetUVMax = new Vector2();

            assetUVMax.x = (posTexture.x + SIZE_TILE * PIXELS_PER_UNIT) / spriteSheetTilesSize.x;
            assetUVMax.y = (posTexture.y + SIZE_TILE * PIXELS_PER_UNIT) / spriteSheetTilesSize.y;

            Vector2 assetUVCenter = new Vector2();

            assetUVCenter.x = Mathf.Lerp(assetUVMin.x, assetUVMax.x, 0.5f);
            assetUVCenter.y = Mathf.Lerp(assetUVMin.y, assetUVMax.y, 0.5f);

            int vertexIndex = GetVertexIndex(posGrid);

            uvs[vertexIndex + VERTEX_INDEX_BOTTOM_LEFT]  = assetUVMin;
            uvs[vertexIndex + VERTEX_INDEX_TOP_LEFT]     = new Vector2(assetUVMin.x, assetUVMax.y);
            uvs[vertexIndex + VERTEX_INDEX_TOP_RIGHT]    = assetUVMax;
            uvs[vertexIndex + VERTEX_INDEX_BOTTOM_RIGHT] = new Vector2(assetUVMax.x, assetUVMin.y);
            uvs[vertexIndex + VERTEX_INDEX_CENTER]       = assetUVCenter;

            RotateTile(posGrid, tile.GetRotation(shouldGetTemporary: tile.HasTemporarySettings()));
        }
    public Int2 GetAssetForTile(ShipGrid.Tile tile, Sorting sorting)
    {
        bool hasTemporarySettings = tile.HasTemporarySettings();

        ShipGrid.Tile.RoomType roomType       = tile.GetRoomType(shouldGetTemporary: hasTemporarySettings);
        TileAssetBlock         tileAssetBlock = GetTileAssetBlockForRoomType(roomType);
        Int2 posTileAssetBlock = tile.GetPosTileAssetBlock(shouldGetTemporary: hasTemporarySettings);

        return(tileAssetBlock.GetPosTexture(posTileAssetBlock, tile.GetBlockType(shouldGetTemporary: hasTemporarySettings), sorting));
    }