public void UpdateCamera(TimeUpdateEvent e, SpectatorTransitionCameraNode transitionCameraNode, [JoinAll] Optional <SingleNode <CameraTargetComponent> > target) { CameraSaveData cameraSaveData = transitionCameraNode.transitionCamera.CameraSaveData; if ((cameraSaveData.Type == CameraType.Free) || target.IsPresent()) { UpdateCamera(e.DeltaTime, transitionCameraNode); ApplyCameraTransformEvent eventInstance = ApplyCameraTransformEvent.ResetApplyCameraTransformEvent(); eventInstance.PositionSmoothingRatio = SPECTATOR_TRANSITION_CAMERA_POSITION_SMOOTHING_RATIO; eventInstance.RotationSmoothingRatio = SPECTATOR_TRANSITION_CAMERA_ROTATION_SMOOTHING_RATIO; eventInstance.DeltaTime = e.DeltaTime; base.ScheduleEvent(eventInstance, transitionCameraNode); if (transitionCameraNode.transitionCamera.TransitionComplete) { CameraType type = cameraSaveData.Type; if (type == CameraType.Follow) { transitionCameraNode.bezierPosition.BezierPosition.SetBaseRatio(cameraSaveData.FollowCameraBezierPositionRatio); transitionCameraNode.bezierPosition.BezierPosition.SetRatioOffset(cameraSaveData.FollowCameraBezierPositionRatioOffset); transitionCameraNode.cameraESM.Esm.ChangeState <CameraStates.CameraFollowState>(); } else if (type == CameraType.MouseOrbit) { MouseOrbitCameraComponent mouseOrbitCamera = transitionCameraNode.cameraESM.Esm.ChangeState <CameraStates.CameraOrbitState>().mouseOrbitCamera; mouseOrbitCamera.distance = cameraSaveData.MouseOrbitDistance; mouseOrbitCamera.targetRotation = cameraSaveData.MouseOrbitTargetRotation; } else if (type == CameraType.Free) { transitionCameraNode.cameraESM.Esm.ChangeState <CameraStates.CameraFreeState>(); } } } }
public void SwitchCameraToSpawnState(NodeAddedEvent evt, SelfTankReadyForCameraNode tank, [JoinByUser] SingleNode <UserUidComponent> userUidNode, [Context, JoinAll] ESMNode camera, [JoinAll] Optional <SingleNode <FollowCameraComponent> > followCameraOptional) { TransitionCameraComponent transitionCamera = camera.transitionCamera; transitionCamera.CameraSaveData = CameraSaveData.CreateFollowData(userUidNode.component.Uid, camera.bezierPosition.BezierPosition.GetBaseRatio(), camera.bezierPosition.BezierPosition.GetRatioOffset()); transitionCamera.Spawn = true; camera.cameraESM.Esm.ChangeState <CameraStates.CameraTransitionState>(); }
public void SwitchCameraToSpawnState(NodeAddedEvent evt, SingleNode <FollowedTankReadyToCameraComponent> tank, [JoinByUser] SingleNode <UserUidComponent> userUidNode, [JoinAll] MouseOrbitESMNode camera) { TransitionCameraComponent transitionCamera = camera.transitionCamera; transitionCamera.CameraSaveData = CameraSaveData.CreateMouseOrbitData(userUidNode.component.Uid, camera.mouseOrbitCamera.distance, camera.mouseOrbitCamera.targetRotation); transitionCamera.Spawn = true; camera.cameraESM.Esm.ChangeState <CameraStates.CameraTransitionState>(); }
public static CameraSaveData CreateFreeData(Transform transform) { CameraSaveData data = new CameraSaveData { Type = CameraType.Free }; Tanks.Battle.ClientGraphics.Impl.TransformData data2 = new Tanks.Battle.ClientGraphics.Impl.TransformData { Position = transform.position, Rotation = transform.rotation }; data.TransformData = data2; return(data); }