public void InstantiatePreviewTileAtPosition(GridTile tilePrefab, Vector2Int position, Vector3 offsetPosition, Quaternion rotation)
    {
        // Parameters
        var      gridCellCenter   = GridManager.Instance.m_Grid.GetCellCenterWorld(position.ToVector3IntXY0());
        var      worldPosition    = gridCellCenter + offsetPosition;
        GridTile instantiatedTile = null;

        if (PrefabUtility.IsPartOfPrefabAsset(tilePrefab.gameObject))
        {
            instantiatedTile = (GridTile)PrefabUtility.InstantiatePrefab(tilePrefab);
        }
        else
        {
            instantiatedTile = (GridTile)Instantiate(tilePrefab, worldPosition, rotation, m_PreviewObjectsHolder) as GridTile;
        }
        instantiatedTile.transform.parent   = m_PreviewObjectsHolder;
        instantiatedTile.transform.position = worldPosition;
        instantiatedTile.transform.rotation = rotation;
        // Preview tile
        var previewTile = new PreviewObject(instantiatedTile.gameObject, position);

        m_PreviewObjects.Add(previewTile);
        // Make the renderers attached to it transparent
        MakeVisualizerTransparent(instantiatedTile.transform);
        // Destroy the grid component
        //DestroyImmediate(instantiatedTile);
        var components = instantiatedTile.GetComponents <MonoBehaviour>();

        foreach (MonoBehaviour comp in components)
        {
            comp.enabled = false;
        }
    }