private void connectDoor(RoomDataHolder srcRoomData, TileData srcTileData, RoomDataHolder neighbourRoomData, TileData neighbourTileData, DoorData door) { Orientation srcDoorOrientation = CommonOperations.getTransformedOrientation(door.wallDirection, srcRoomData.getOrientation()); Orientation targetOrientation = CommonOperations.getInvertedOrientation(srcDoorOrientation); Orientation neighbourRoomOrientation = neighbourRoomData.getOrientation(); Orientation targetDoorOrientation = targetOrientation; if (neighbourRoomOrientation == Orientation.EAST) { targetDoorOrientation = CommonOperations.getTransformedOrientation(targetOrientation, Orientation.WEST); } else if (neighbourRoomOrientation == Orientation.SOUTH) { targetDoorOrientation = CommonOperations.getTransformedOrientation(targetOrientation, Orientation.SOUTH); } else if (neighbourRoomOrientation == Orientation.WEST) { targetDoorOrientation = CommonOperations.getTransformedOrientation(targetOrientation, Orientation.EAST); } foreach (DoorData doorData in neighbourTileData.doors) { if (doorData.wallDirection == targetDoorOrientation) { door.setDoorObject(doorData.getDoorObject()); } } }
private void placeDoor(RoomDataHolder roomData, TileData tile, DoorData door, Orientation orientation, Coordinate coordinate) { GameObject doorObject = roomData.getRandomSpawnableDoor(); GameObject builtDoor = Instantiate(doorObject); Transform doorTransform = builtDoor.transform; if (doorTransform != null) { doorTransform.parent = this.gameObject.transform; Vector3 pos = getRealDoorPosition(coordinate, orientation); Vector3 rot = getRealDoorRotation(orientation); doorTransform.position = pos; doorTransform.eulerAngles = rot; } door.setDoorObject(builtDoor); }