public void Translate(Vector3 translation, CAGType cagType) { transform.Translate(translation * ScaleFactor); this.cagType = cagType; cameraHolder.localPosition = new Vector3(GetTargetXPos(), 0, 0); PositionFloorCameraWhenRotating(); PositionCameras(); }
//Generate camera preview gizmo. private void OnDrawGizmos() { //Only draw if 2D mode. if (SceneView.currentDrawingSceneView != null && !SceneView.currentDrawingSceneView.in2DMode) { return; } if (EditorPrefs.HasKey("ImmersiveCameraScreenSize")) { screenSize = (ScreenSizes)EditorPrefs.GetInt("ImmersiveCameraScreenSize"); } if (EditorPrefs.HasKey("ImmersiveCameraLayout")) { layout = (SurfacePosition)EditorPrefs.GetInt("ImmersiveCameraLayout"); } //Check if camera settings have changed. if (_screenSize != screenSize || _layout != layout || _cagType != cagType) { _layout = layout; _screenSize = screenSize; _cagType = cagType; //Calculate new Surface Information rects = new List <Rect>(); var surfacePositions = GetSurfacesFromLayout(layout); var surfaceRects = GenerateSurfaceRectsInEditor(surfacePositions); GenerateSurfacesInfo(surfacePositions, surfaceRects); //Calculate new cameras size and position. for (int i = 0; i < walls.Count; i++) { var surface = walls[i]; Rect rect = new Rect(); rect.size = new Vector2(surface.aspectRatio, height * 2); if (cagType == CAGType.Interior) { rect.center = GetWallCameraPositionCAGI(surface); } else if (cagType == CAGType.Exterior) { rect.center = GetWallCameraPositionCAGE(surface); } rects.Add(rect); } } //Draw camera frustrums. float xPos = transform.position.x; float yPos = transform.position.y; var zPos = transform.position.z + mainCamera.farClipPlane; Gizmos.color = Color.white; for (int i = 0; i < rects.Count; i++) { var rect = rects[i]; Gizmos.DrawLine(new Vector3(xPos + rect.xMin, yPos + rect.yMax, zPos), new Vector3(xPos + rect.xMax, yPos + rect.yMax, zPos)); Gizmos.DrawLine(new Vector3(xPos + rect.xMin, yPos + rect.yMin, zPos), new Vector3(xPos + rect.xMax, yPos + rect.yMin, zPos)); Gizmos.DrawLine(new Vector3(xPos + rect.xMin, yPos + rect.yMin, zPos), new Vector3(xPos + rect.xMin, yPos + rect.yMax, zPos)); Gizmos.DrawLine(new Vector3(xPos + rect.xMax, yPos + rect.yMin, zPos), new Vector3(xPos + rect.xMax, yPos + rect.yMax, zPos)); } }