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); }