/** Vector3 * X - horizontal axis * Y - vertical axis * Z - height axis */ private void SetCameraPosition(CameraPositionEnum position) { switch (position) { case CameraPositionEnum.FACE: this.currentCamPos = this.originalCamPos; //this.currentCamPos.X -= 1f; //this.currentCamPos.Y += 1.5f; //this.currentCamPos.Z += 0.5f; API.PointCamAtCoord(this.camera, this.originalCamPointCoord.X, this.originalCamPointCoord.Y, this.originalCamPointCoord.Z); break; case CameraPositionEnum.TORSO: break; case CameraPositionEnum.LEGS: break; case CameraPositionEnum.SHOES: break; case CameraPositionEnum.FULLBODY: this.currentCamPos = this.originalCamPos; this.currentCamPos.X += 1f; this.currentCamPos.Y -= 1f; this.currentCamPos.Z -= 1f; API.PointCamAtCoord(this.camera, this.pedPos.X, this.pedPos.Y, this.pedPos.Z + 0.5f); // Point at dick break; default: break; } API.SetCamCoord(this.camera, this.currentCamPos.X, this.currentCamPos.Y, this.currentCamPos.Z); }
public void ResetCamera(CameraPositionEnum cameraPosition, bool lockZoom = false) { if (cameraPosition == CameraPositionEnum.Current) { cameraPosition = _CurrentCameraPosition; } Viewport.FixedRotationPoint = new Point3D(0f, 0f, _modelHeightPosition / 2f); double dirMult = cameraPosition == CameraPositionEnum.Back || cameraPosition == CameraPositionEnum.OtherSide ? -1 : 1; switch (cameraPosition) { default: case CameraPositionEnum.Default: Viewport.FixedRotationPoint = new Point3D(0f, 0f, _modelHeightPosition / 5f); Viewport.Camera.AnimateTo(_modelCameraPosition, new Vector3D(-1, 1, -1), new Vector3D(0, 0, 1), 500d); break; case CameraPositionEnum.Up: Viewport.Camera.AnimateTo(new Point3D(0, 0, _modelCameraPosition.Z * 2), new Vector3D(_CurrentCameraPosition == CameraPositionEnum.Front ? -0.01 * dirMult : 0, _CurrentCameraPosition != CameraPositionEnum.Front ? -0.01 * dirMult : 0, -1), new Vector3D(0, 0, 1f), 500d); break; case CameraPositionEnum.Front: case CameraPositionEnum.Back: Viewport.Camera.AnimateTo(new Point3D(0, _modelCameraPosition.Y * 2 * dirMult, _modelHeightPosition / 2d), new Vector3D(0, 1 * dirMult, 0), new Vector3D(0, 0, 1f), 500d); break; case CameraPositionEnum.Side: case CameraPositionEnum.OtherSide: Viewport.Camera.AnimateTo(new Point3D(_modelCameraPosition.X * 2 * dirMult, 0, _modelHeightPosition / 2d), new Vector3D(-1 * dirMult, 0, 0), new Vector3D(0, 0, 1f), 500d); break; } if (CurrentModelVisual == null) { minZoom = maxZoom = _modelCameraPosition.DistanceTo(new Point3D()); } _CurrentCameraPosition = cameraPosition; }