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