void displayRooms(RoomPartitioning partitioning)
    {
        // Debug.Log("room points:");
        // for(int i =0;i<partitioning.genes.Count;i++){
        //     Debug.Log(partitioning.genes[i]);
        // }
        GameObject partitionsContainer = new GameObject();

        partitionsContainer.name               = "Rooms";
        partitionsContainer.transform.parent   = gameObject.transform;
        partitionsContainer.transform.position = new Vector3(0, 2, 0);
        List <List <Vector3> > rooms         = partitioning.getPartitions().OrderBy(x => - 1f * Helpers.getArea(x)).ToList();
        List <GameObject>      roomObjects   = new List <GameObject>();
        List <Color>           roomSemantics = getColor(rooms.Count);

        for (int i = 0; i < rooms.Count; i++)
        {
            displayWalls(Helpers.reorder(rooms[i]));
            GameObject room = new GameObject();
            room.name               = string.Format("Room {0}", i + 1);
            room.transform.parent   = partitionsContainer.transform;
            room.transform.position = new Vector3(0, 2, 0);
            MeshRenderer meshr = room.AddComponent <MeshRenderer>();
            MeshFilter   meshf = room.AddComponent <MeshFilter>();
            meshf.mesh = Helpers.triangulate(Helpers.reorder(rooms[i]));
            meshr.material.SetColor("_Color", roomSemantics[i]);
        }
    }
    // void OnDrawGizmosSelected(){

    //     for(int i =0;i<bestRooms.genes.Count;i++){
    //         Vector2 pos = bestRooms.genes[i];
    //         Gizmos.color = Color.HSVToRGB(i*1f/bestRooms.genes.Count,1,1);
    //         Gizmos.DrawSphere(new Vector3(pos.x,2,pos.y),0.1f);
    //     }

    // }
    void generateBuilding()
    {
        displayLot();
        Foundation footprint = getFootprint();

        displayFootprint(footprint);
        bestRooms = getPartitioning(footprint);
        displayRooms(bestRooms);
        displayRoof(footprint);
    }