public void ExecuteUserCmd(IUserCmdOwner owner, IUserCmd cmd) { _cmdSeq = cmd.Seq; PlayerEntity player = owner.OwnerEntity as PlayerEntity; if (!player.hasCameraStateNew) { return; } if (!player.hasCameraStateOutputNew) { return; } if (player.gamePlay.IsObserving()) { return; } var archotRotation = player.cameraArchor.ArchorEulerAngle; var result = player.cameraStateOutputNew; CalcuForNormal(cmd, player, archotRotation, result); DummyCameraMotorState.Convert(_state, player.cameraStateNew); CopyStateToUploadComponent(player.cameraStateNew, player.cameraStateUpload); player.cameraStateUpload.ArchorType = (Byte)player.cameraArchor.ArchorType; if (player.appearanceInterface.Appearance.IsFirstPerson && player.gamePlay.BeingObserved) { CalcuForObserving(cmd, player, archotRotation, player.thirdPersonDataForObserving.ThirdPersonData); } }
private void CalcuForNormal(IUserCmd cmd, PlayerEntity player, Vector3 archotRotation, CameraStateOutputNewComponent result) { DummyCameraMotorState.Convert(player.cameraStateNew, _state); DummyCameraMotorInput _input = (DummyCameraMotorInput)player.cameraStateNew.CameraMotorInput; _input.Generate(_context, player, cmd, archotRotation.y, archotRotation.x); for (int i = 0; i < (int)SubCameraMotorType.End; i++) { var type = (SubCameraMotorType)i; SetNextMotor(player, type, _state, _input); } CameraActionManager.OnAction(player, _state); player.cameraStateUpload.EnterActionCode = CameraActionManager.GetActionCode(CameraActionType.Enter); player.cameraStateUpload.LeaveActionCode = CameraActionManager.GetActionCode(CameraActionType.Leave); CameraActionManager.ClearActionCode(); player.cameraStateNew.CameraMotorInput = player.cameraStateNew.LastCameraMotorInput; player.cameraStateNew.LastCameraMotorInput = _input; CalcFinalOutput(player, (DummyCameraMotorInput)player.cameraStateNew.LastCameraMotorInput, result, _state); }
private void CalcFinalOutput(PlayerEntity player, DummyCameraMotorInput input, CameraStateOutputNewComponent finalOutput, DummyCameraMotorState state) { player.cameraConfigNow.Config = state.GetMainConfig(); player.cameraConfigNow.PeekConfig = SingletonManager.Get <CameraConfigManager>().Config.PeekConfig; player.cameraConfigNow.DeadConfig = SingletonManager.Get <CameraConfigManager>().Config.DeadConfig; _output.Init(); _output.ArchorPosition = player.cameraArchor.ArchorPosition + player.cameraArchor.ArchorTransitionOffsetPosition; _output.ArchorEulerAngle = player.cameraArchor.ArchorEulerAngle; for (int i = 0; i < (int)SubCameraMotorType.End; i++) { var type = (SubCameraMotorType)i; _output.Append(CalcSubFinalCamera(player, input, state, _motors.GetDict(type), state.Get(type), player.time.ClientTime)); } finalOutput.ArchorPosition = _output.ArchorPosition; finalOutput.ArchorEulerAngle = _output.ArchorEulerAngle; finalOutput.ArchorOffset = _output.ArchorOffset; finalOutput.ArchorPostOffset = _output.ArchorPostOffset; finalOutput.EulerAngle = _output.EulerAngle; finalOutput.Offset = _output.Offset; finalOutput.PostOffset = _output.PostOffset; finalOutput.Fov = _output.Fov; finalOutput.Far = _output.Far; finalOutput.Near = _output.Near; SmoothFov(player); }
public CameraUpdateSystem(Contexts context, Motors m) : base(context) { _playerContext = context.player; _motors = m; _state = new DummyCameraMotorState(_motors); _dummyState = new DummyCameraMotorState(_motors); }
protected override void ExecWhenObserving(PlayerEntity player, IUserCmd cmd) { var observedPlayer = player.observeCamera.ObservedPlayer; if (observedPlayer != null) { DummyCameraMotorInput _input = (DummyCameraMotorInput)observedPlayer.cameraStateNew.CameraMotorInput; if (_input == null) { _input = new DummyCameraMotorInput(); } _input.FakeForObserve(observedPlayer); DummyCameraMotorState.Convert(observedPlayer.cameraStateNew, _state); observedPlayer.cameraStateNew.CameraMotorInput = observedPlayer.cameraStateNew.LastCameraMotorInput; observedPlayer.cameraStateNew.LastCameraMotorInput = _input; var result = observedPlayer.cameraStateOutputNew; CalcFinalOutput(observedPlayer, (DummyCameraMotorInput)observedPlayer.cameraStateNew.LastCameraMotorInput, result, _state); DummyCameraMotorState.Convert(_state, observedPlayer.cameraStateNew); } RestoreSelfPlayer(player); }
private void CalcFinalOutput(PlayerEntity player, DummyCameraMotorInput input, CameraStateOutputNewComponent finalOutput, DummyCameraMotorState state) { _output.Init(); _output.ArchorPosition = player.cameraArchor.ArchorPosition + player.cameraArchor.ArchorTransitionOffsetPosition; _output.ArchorEulerAngle = player.cameraArchor.ArchorEulerAngle; for (int i = 0; i < (int)SubCameraMotorType.End; i++) { var type = (SubCameraMotorType)i; _output.Append(CalcSubFinalCamera(player, input, state, _motors.GetDict(type), state.Get(type), player.time.ClientTime)); } finalOutput.ArchorPosition = _output.ArchorPosition; finalOutput.ArchorEulerAngle = _output.ArchorEulerAngle; finalOutput.ArchorOffset = _output.ArchorOffset; finalOutput.ArchorPostOffset = _output.ArchorPostOffset; finalOutput.EulerAngle = _output.EulerAngle; finalOutput.Offset = _output.Offset; finalOutput.PostOffset = _output.PostOffset; finalOutput.Fov = _output.Fov; finalOutput.Far = _output.Far; finalOutput.Near = _output.Near; finalOutput.NeedDetectDistance = !_output.ForbidDetect; SmoothFov(player, input.GetViewConfig()); }
public CameraUpdateSystem(Contexts context, Motors m) { _context = context; _vehicleContext = context.vehicle; _freeMoveContext = context.freeMove; _playerContext = context.player; _motors = m; _state = new DummyCameraMotorState(_motors); _dummyState = new DummyCameraMotorState(_motors); }
private void CalcuForObserving(IUserCmd cmd, PlayerEntity player, Vector3 archotRotation, CameraStateOutputNewComponent result) { DummyCameraMotorState.Convert(player.cameraStateNew, _dummyState); _dummyState.Dict[(int)SubCameraMotorType.View].NowMode = (byte)ECameraViewMode.ThirdPerson; _dummyState.Dict[(int)SubCameraMotorType.View].LastMode = (byte)ECameraViewMode.FirstPerson; DummyCameraMotorInput _input = (DummyCameraMotorInput)player.cameraStateNew.CameraMotorInput; _input.Generate(_context, player, cmd, archotRotation.y, archotRotation.x); CalcFinalOutput(player, _input, result, _dummyState); result.ArchorPosition = player.thirdPersonDataForObserving.ThirdPersonArchorPosition; }
public CameraUpdateSystem(Contexts context, Motors m) { _context = context; _vehicleContext = context.vehicle; _freeMoveContext = context.freeMove; _playerContext = context.player; _motors = m; _state = new DummyCameraMotorState(_motors); foreach (SubCameraMotorType value in Enum.GetValues(typeof(SubCameraMotorType))) { _subCameraMotorTypeArray.Add(value); } }
public void ExecuteUserCmd(IUserCmdOwner owner, IUserCmd cmd) { _cmdSeq = cmd.Seq; PlayerEntity player = owner.OwnerEntity as PlayerEntity; if (!player.hasCameraStateNew) { return; } if (!player.hasCameraStateOutputNew) { return; } DummyCameraMotorState.Convert(player.cameraStateNew, _state); DummyCameraMotorInput _input = (DummyCameraMotorInput)player.cameraStateNew.CameraMotorInput; var archotRotation = player.cameraArchor.ArchorEulerAngle; _input.Generate(player, cmd, archotRotation.y, archotRotation.x); //if (_input.IsChange(player.cameraStateNew.LastCameraMotorInput)) { foreach (SubCameraMotorType i in _subCameraMotorTypeArray) { var type = i; SetNextMotor(player, type, _state, _input); } } CameraActionManager.OnAction(player, _state); player.cameraStateUpload.EnterActionCode = CameraActionManager.GetActionCode(CameraActionType.Enter); player.cameraStateUpload.LeaveActionCode = CameraActionManager.GetActionCode(CameraActionType.Leave); CameraActionManager.ClearActionCode(); player.cameraStateNew.CameraMotorInput = player.cameraStateNew.LastCameraMotorInput; player.cameraStateNew.LastCameraMotorInput = _input; CalcFinalOutput(player, (DummyCameraMotorInput)player.cameraStateNew.LastCameraMotorInput, player.cameraStateOutputNew); DummyCameraMotorState.Convert(_state, player.cameraStateNew); CopyStateToUploadComponent(player.cameraStateNew, player.cameraStateUpload); player.cameraStateUpload.ArchorType = (Byte)player.cameraArchor.ArchorType; }
protected override void ExecWhenNormal(PlayerEntity player, IUserCmd cmd) { _cmdSeq = cmd.Seq; if (!player.hasCameraStateNew) { return; } if (!player.hasCameraStateOutputNew) { return; } var archotRotation = player.cameraArchor.ArchorEulerAngle; var result = player.cameraStateOutputNew; CalcuForNormal(cmd, player, archotRotation, result); DummyCameraMotorState.Convert(_state, player.cameraStateNew); CopyStateToUploadComponent(player.cameraStateNew, player.cameraStateUpload); player.cameraStateUpload.ArchorType = (Byte)player.cameraArchor.ArchorType; }
private void CalcuForNormal(IUserCmd cmd, PlayerEntity player, CameraStateOutputNewComponent result) { DummyCameraMotorState.Convert(player.cameraStateNew, _state); DummyCameraMotorInput _input = (DummyCameraMotorInput)player.cameraStateNew.CameraMotorInput; _input.Generate(player, cmd, _state, LockView); if (!HasConfigInitialed(_input)) { return; } for (int i = 0; i < (int)SubCameraMotorType.End; i++) { var type = (SubCameraMotorType)i; SetNextMotor(player, type, _state, _input); } HandleAction(player); _motors.ActionManager.ClearActionCode(); player.cameraStateNew.CameraMotorInput = player.cameraStateNew.LastCameraMotorInput; player.cameraStateNew.LastCameraMotorInput = _input; player.cameraConfigNow.Config = _input.GetPoseConfig(_state.GetMainMotor().NowMode); player.cameraConfigNow.PeekConfig = _input.GetPeekConfig(); player.cameraConfigNow.DeadConfig = _input.GetDeadConfig(); CalcFinalOutput(player, (DummyCameraMotorInput)player.cameraStateNew.LastCameraMotorInput, result, _state); DummyCameraMotorState.Convert(_state, player.cameraStateNew); player.cameraStateNew.CanFire = !_state.IsFree() && _input.GetPoseConfig(player.cameraStateNew.MainNowMode).CanFire; }
public ServerPostCameraUpdateSystem(Contexts context) { _context = context; _playerContext = context.player; _state = new DummyCameraMotorState(_motors); }