public override void RefreshFloors(int frequency) { List <Vector3> allStructureVerts = new List <Vector3>(_buildingShape); List <Vector3> newFloorVerts = null; for (int i = 1; i <= frequency; i++) { newFloorVerts = ExtendFloorBase(_buildingShape, floorNumber: i, scaledFactor: Random.Range(.9f, 1.2f), eulerRotation: new Vector3(Random.Range(-3, 3), Random.Range(-5, 5), Random.Range(-3, 3)), up: PlaneDirection); allStructureVerts.AddRange(newFloorVerts); } List <Vector3> roofTopPoints = new List <Vector3>(); BuildingTerminations buildingTermination; if (frequency != 0) { BuildingStructure.SetVertex(allStructureVerts); BuildingStructure.BuildingShapeVerts = _buildingShape.Count; BuildingStructure.SetTriangles(); buildingTermination = BuildingTermination; roofTopPoints = newFloorVerts; } else { buildingTermination = BuildingTerminations.Floor; roofTopPoints.AddRange(_buildingShape); } roofTopPoints = ConstructTermination(buildingTermination, roofTopPoints, PlaneDirection, ModuleHeight); foreach (var p in roofTopPoints) { Math3D.CreateSphereInPos(p, Color.black, "roofPoints"); } RoofTermination.SetVertex(roofTopPoints); RoofTermination.BuildingShapeVerts = _buildingShape.Count; RoofTermination.RoofType = buildingTermination; RoofTermination.SetTriangles(); }