public Door( Transform parent, Material material, DoorParams _doorParams ) { doorParams = _doorParams; CreateDoor(parent, material); }
public void GenerateOpenings(BaseParams baseParams, ref List <WindowParams> windowParams, ref DoorParams doorParams, bool rowSameLit, Vector3?lastFloorWinSize = null) { List <Quaternion> rotations = new List <Quaternion>(); List <Vector3> positions = new List <Vector3>(); Vector3 finalSize; if (baseParams.floorNum < 2) { finalSize = RandomiseWindowSize(baseParams.finalSize); } else { finalSize = (Vector3)lastFloorWinSize; } GenerateWindowsPositions(baseParams.finalSize, finalSize, baseParams.leftFirewall, baseParams.rightFirewall, baseParams.backFirewall, ref positions, ref rotations); Vector2Int glassColor = RandomiseWindowColor(); if (baseParams.floorNum == 0) { int r = Random.Range(0, positions.Count); Vector3 doorFinalSize = new Vector3(finalSize.x, finalSize.y + positions[r].y, finalSize.z); GenerateArcParameters(doorFinalSize); doorParams.finalPos = new Vector3(positions[r].x, 0, positions[r].z); doorParams.finalSize = doorFinalSize; doorParams.finalRot = rotations[r]; doorParams.openingStyle = baseParams.doorStyle; if (baseParams.doorStyle == OpeningStyle.ARCH) { doorParams.archedOpeningParams = new ArchedOpeningParams(outerArcF, outerArcB, innerArcF, innerArcB, frameDimensions); doorParams.planeParams = new PlaneParams(baseParams.doorStyle, ColorManager.GetDoorColor(), BaseObjSizes.planeArcSize, innerArcF, doorFinalSize, windowOffset); } else { doorParams.squareOpeningParams = new SquareOpeningParams(frameDimensions); doorParams.planeParams = new PlaneParams(baseParams.doorStyle, ColorManager.GetDoorColor(), BaseObjSizes.planeSqSize, doorFinalSize, windowOffset); } positions.RemoveAt(r); rotations.RemoveAt(r); } GenerateArcParameters(finalSize); GenerateSegmentsPositions(finalSize); for (int i = 0; i < positions.Count; i++) { WindowParams windowParam = new WindowParams(); if (!rowSameLit) { glassColor = RandomiseWindowColor(); } if (baseParams.windowStyle == OpeningStyle.ARCH) { windowParam.archedOpeningParams = new ArchedOpeningParams(outerArcF, outerArcB, innerArcF, innerArcB, frameDimensions); windowParam.glassParams = new PlaneParams(baseParams.windowStyle, glassColor, BaseObjSizes.planeArcSize, innerArcF, finalSize, windowOffset); } else { windowParam.squareOpeningParams = new SquareOpeningParams(frameDimensions); windowParam.glassParams = new PlaneParams(baseParams.windowStyle, glassColor, BaseObjSizes.planeSqSize, finalSize, windowOffset); } windowParam.segmentationParams = new SegmentationParams(vertSegPositions, horSegPositions, segmentDimensions); windowParam.finalSize = finalSize; windowParam.finalPos = positions[i]; windowParam.finalRot = rotations[i]; windowParam.openingStyle = baseParams.windowStyle; windowParams.Add(windowParam); } }