/// <summary>
    /// Updates the types // only update interactive part
    /// </summary>
    private void UpdateFloorsAndTypes()
    {
        Debug.Log("Update floors & types in Visualizations.");

        int index     = siteData.GetInteractiveIndex();
        int gridIndex = 0;

        ///
        /// The interactive grid is indexed the other way!
        /// so have to iterate r-l up-down
        ///
        int interactiveEndX = (int)(siteData.GetInteractiveGridLocation().x + siteData.GetInteractiveGridDim().x);
        int interactiveEndY = (int)(siteData.GetInteractiveGridLocation().y + siteData.GetInteractiveGridDim().y);

        for (int j = interactiveEndX; j > (int)siteData.GetInteractiveGridLocation().x; j--)
        {
            for (int i = (int)siteData.GetInteractiveGridLocation().y; i < interactiveEndY; i++)
            {
                index = i * (int)(_gridY) + j;
                // Update interactive part only
                // outer check only in data source is INTERNAL or has bool for update
                //if (cityIO.ShouldUpdateGrid (gridIndex)) {
                if (siteData.IsIndexInsideInteractiveArea(index))
                {
                    _typesList [index]  = cityIO.GetGridType(gridIndex);
                    _floorsList [index] = cityIO.GetFloorHeight(gridIndex);
                    UpdateType(index);
                    UpdateFloor(index);

                    // Update type for heatmaps too
                    foreach (HeatMap hm in heatmaps)
                    {
                        hm.UpdateType(i, j, _typesList [index], index);
                    }
                }
                //}
                gridIndex++;
            }
        }
    }