public void Follow(CameraFollowEvent e, CameraTargetNode cameraTargetNode, [JoinByTank] TankNode tank, [JoinAll] CameraNode cameraNode, [JoinAll] Optional <SingleNode <FollowCameraComponent> > followCameraOptionalNode) { CameraTransformDataComponent cameraTransformData = cameraNode.cameraTransformData; CameraOffsetConfigComponent cameraOffsetConfig = cameraNode.cameraOffsetConfig; Vector3 cameraOffset = new Vector3(cameraOffsetConfig.XOffset, cameraOffsetConfig.YOffset, cameraOffsetConfig.ZOffset); BezierPosition bezierPosition = cameraNode.bezierPosition.BezierPosition; cameraTransformData.Data = CameraPositionCalculator.GetTargetFollowCameraTransformData(cameraTargetNode.cameraTarget.TargetObject.transform, tank.baseRenderer, tank.tankColliders.BoundsCollider.bounds.center, bezierPosition, cameraOffset); cameraNode.cameraRootTransform.Root.SetPositionSafe(cameraTransformData.Data.Position); cameraNode.cameraRootTransform.Root.SetRotationSafe(cameraTransformData.Data.Rotation); }
public void UpdateGoCamera(TimeUpdateEvent evt, GoCameraNode goCameraNode, [JoinAll] CameraTargetNode cameraTargetNode) { Transform transform = cameraTargetNode.cameraTarget.TargetObject.transform; int goCameraIndex = goCameraNode.goCamera.goCameraIndex; GoCameraPoint point = goCameraNode.goCameraPointsUnity.goCameraPoints[goCameraIndex]; Vector3 vector = (Vector3)(transform.rotation * point.poistion); TransformData data = new TransformData { Position = transform.position + vector, Rotation = Quaternion.Euler(transform.rotation.eulerAngles + point.rotation) }; goCameraNode.cameraTransformData.Data = data; base.ScheduleEvent(ApplyCameraTransformEvent.ResetApplyCameraTransformEvent(), goCameraNode); }
public unsafe void UpdateMouseOrbitCamera(TimeUpdateEvent evt, OrbitCameraNode cameraNode, [JoinAll] CameraTargetNode targetNode) { float deltaTime = evt.DeltaTime; MouseOrbitCameraComponent mouseOrbitCamera = cameraNode.mouseOrbitCamera; Vector3 eulerAngles = mouseOrbitCamera.targetRotation.eulerAngles; float num2 = 1f; if (InputManager.CheckAction(SpectatorCameraActions.SlowMovement)) { num2 = MouseOrbitCameraConstants.ROTATION_SLOW_RATIO; } float num3 = MouseOrbitCameraConstants.X_ROTATION_SPEED * deltaTime; float num4 = MouseOrbitCameraConstants.Y_ROTATION_SPEED * deltaTime; Vector3 *vectorPtr1 = &eulerAngles; vectorPtr1->x -= (InputManager.GetUnityAxis(UnityInputConstants.MOUSE_Y) * num3) * num2; Vector3 *vectorPtr2 = &eulerAngles; vectorPtr2->y += (InputManager.GetUnityAxis(UnityInputConstants.MOUSE_X) * num4) * num2; mouseOrbitCamera.targetRotation = Quaternion.Euler(MouseOrbitCameraUtils.NormalizeEuler(eulerAngles)); mouseOrbitCamera.distance *= Mathf.Pow(3f, -InputManager.GetUnityAxis(UnityInputConstants.MOUSE_SCROLL_WHEEL)); mouseOrbitCamera.distance = Mathf.Clamp(mouseOrbitCamera.distance, MouseOrbitCameraConstants.MIN_DISTANCE, MouseOrbitCameraConstants.MAX_DISTANCE); Vector3 position = targetNode.cameraTarget.TargetObject.transform.position; TransformData data = new TransformData { Position = MouseOrbitCameraUtils.GetClippedPosition(position, position + (mouseOrbitCamera.targetRotation * new Vector3(0f, 0f, -mouseOrbitCamera.distance)), MouseOrbitCameraConstants.MAX_DISTANCE), Rotation = mouseOrbitCamera.targetRotation }; cameraNode.cameraTransformData.Data = data; ApplyCameraTransformEvent eventInstance = ApplyCameraTransformEvent.ResetApplyCameraTransformEvent(); eventInstance.PositionSmoothingRatio = MouseOrbitCameraConstants.POSITION_SMOOTHING_SPEED; eventInstance.RotationSmoothingRatio = MouseOrbitCameraConstants.ROTATION_SMOOTHING_SPEED; eventInstance.DeltaTime = deltaTime; base.ScheduleEvent(eventInstance, cameraNode); }
public void InitGoCamera(NodeAddedEvent evt, GoCameraNode goCameraNode, [JoinAll] CameraTargetNode cameraTargetNode) { int num = Random.Range(0, goCameraNode.goCameraPointsUnity.goCameraPoints.Length); goCameraNode.goCamera.goCameraIndex = num; }
private void UpdateFollowCameraData(float deltaTime, FollowCameraNode cameraNode, CameraTargetNode targetNode, TankNode tank, MouseControlStateHolderComponent mouseControlStateHolder) { GameObject targetObject = targetNode.cameraTarget.TargetObject; if (targetObject != null) { CameraTransformDataComponent cameraTransformData = cameraNode.cameraTransformData; Transform target = targetObject.transform; FollowCameraComponent followCamera = cameraNode.followCamera; BezierPosition bezierPosition = cameraNode.bezierPosition.BezierPosition; CameraData cameraData = followCamera.cameraData; this.UpdateBezierPosition(bezierPosition, followCamera.verticalCameraSpeed, deltaTime, targetNode.weaponRotationControl.MouseRotationCumulativeVerticalAngle, mouseControlStateHolder.MouseVerticalInverted); targetNode.weaponRotationControl.MouseRotationCumulativeVerticalAngle = 0f; float mouseRotationCumulativeHorizontalAngle = targetNode.weaponRotationControl.MouseRotationCumulativeHorizontalAngle; if (Mathf.Abs(MathUtil.ClampAngle180(Vector3.Angle(target.up, Vector3.up))) > 90f) { mouseRotationCumulativeHorizontalAngle *= -1f; } bool mouse = targetNode.weaponRotationControl.MouseRotationCumulativeHorizontalAngle != 0f; CameraOffsetConfigComponent cameraOffsetConfig = cameraNode.cameraOffsetConfig; Vector3 cameraOffset = new Vector3(cameraOffsetConfig.XOffset, cameraOffsetConfig.YOffset, cameraOffsetConfig.ZOffset); Vector3 cameraCalculated = CameraPositionCalculator.CalculateCameraPosition(target, tank.baseRenderer, tank.tankColliders.BoundsCollider.bounds.center, bezierPosition, cameraData, cameraOffset, mouseRotationCumulativeHorizontalAngle); Vector3 rotation = cameraTransformData.Data.Rotation.eulerAngles * 0.01745329f; CameraPositionCalculator.CalculatePitchMovement(ref rotation, bezierPosition, deltaTime, cameraData, mouse); CameraPositionCalculator.CalculateYawMovement((Vector3)(Quaternion.Euler(new Vector3(0f, mouseRotationCumulativeHorizontalAngle, 0f)) * target.forward), ref rotation, deltaTime, cameraData, mouse); CameraPositionCalculator.SmoothReturnRoll(ref rotation, followCamera.rollReturnSpeedDegPerSec, deltaTime); TransformData data4 = new TransformData { Position = CameraPositionCalculator.CalculateLinearMovement(deltaTime, cameraCalculated, cameraTransformData.Data.Position, cameraData, target, mouse), Rotation = Quaternion.Euler(rotation * 57.29578f) }; cameraTransformData.Data = data4; } }
public void UpdateFollowCameraData(UpdateEvent e, FollowSpectratorCameraNode cameraNode, [JoinAll] CameraTargetNode targetNode, [JoinByTank] TankNode tank, [JoinAll] SingleNode <SelfUserComponent> selfUser, [JoinByUser] SingleNode <MouseControlStateHolderComponent> mouseControlStateHolderNode) { this.UpdateFollowCameraData(e.DeltaTime, cameraNode, targetNode, tank, mouseControlStateHolderNode.component); ApplyCameraTransformEvent eventInstance = ApplyCameraTransformEvent.ResetApplyCameraTransformEvent(); eventInstance.PositionSmoothingRatio = SPECTATOR_FOLLOW_CAMERA_POSITION_SMOOTHING_RATIO; eventInstance.RotationSmoothingRatio = SPECTATOR_FOLLOW_CAMERA_ROTATION_RATIO; eventInstance.DeltaTime = e.DeltaTime; base.ScheduleEvent(eventInstance, cameraNode); }
public void UpdateFollowCameraData(UpdateEvent e, FollowCameraNode cameraNode, [JoinAll] CameraTargetNode targetNode, [JoinByTank] TankNode tank, [JoinAll] SingleNode <SelfTankComponent> selfTank, [JoinByUser] SingleNode <MouseControlStateHolderComponent> mouseControlStateHolderNode) { this.UpdateFollowCameraData(e.DeltaTime, cameraNode, targetNode, tank, mouseControlStateHolderNode.component); base.ScheduleEvent(ApplyCameraTransformEvent.ResetApplyCameraTransformEvent(), cameraNode); }