public void InitCamera(NodeAddedEvent evt, SpectatorTransitionCameraNode transitionCameraNode, TankNode tank, [Context, JoinByTank] WeaponNode weapon, [JoinByUser] FollowedUserNode followedUser) { float flyTimeSec = 0.55f; float flyHeight = 1f; if (transitionCameraNode.transitionCamera.Spawn) { SpawnCameraConfigUnityComponent spawnCameraConfigUnity = transitionCameraNode.spawnCameraConfigUnity; flyTimeSec = spawnCameraConfigUnity.FlyTimeSec; flyHeight = spawnCameraConfigUnity.FlyHeight; } else { TransitionCameraConfigUnityComponent transitionCameraConfigUnity = transitionCameraNode.transitionCameraConfigUnity; flyTimeSec = transitionCameraConfigUnity.FlyTimeSec; flyHeight = transitionCameraConfigUnity.FlyHeight; } CameraType type = transitionCameraNode.transitionCamera.CameraSaveData.Type; if (type == CameraType.Follow) { this.InitFollowCamera(transitionCameraNode, weapon, tank, flyTimeSec, flyHeight); } else if (type == CameraType.MouseOrbit) { TransformData data = MouseOrbitCameraUtils.GetTargetMouseOrbitCameraTransformData(weapon.cameraTarget.TargetObject.transform, transitionCameraNode.transitionCamera.CameraSaveData.MouseOrbitDistance, transitionCameraNode.transitionCamera.CameraSaveData.MouseOrbitTargetRotation); InitCamera(transitionCameraNode, data.Position, data.Rotation.eulerAngles, flyTimeSec, flyHeight); } }
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 InitCamera(NodeAddedEvent evt, SpectatorTransitionCameraNode transitionCameraNode) { TransitionCameraConfigUnityComponent transitionCameraConfigUnity = transitionCameraNode.transitionCameraConfigUnity; if (transitionCameraNode.transitionCamera.CameraSaveData.Type == CameraType.Free) { TransformData transformData = transitionCameraNode.transitionCamera.CameraSaveData.TransformData; Vector3 position = transformData.Position; InitCamera(transitionCameraNode, position, transformData.Rotation.eulerAngles, transitionCameraConfigUnity.FlyTimeSec, transitionCameraConfigUnity.FlyHeight); } }