private void BoneUpdate(PlayerEntity player) { var appearanceP1 = player.appearanceInterface.FirstPersonAppearance; var characterBone = player.characterBoneInterface.CharacterBone; _fsmOutputs.ResetOutput(); characterBone.Execute(_fsmOutputs.AddOutput); _fsmOutputs.SetOutput(player); if (!SharedConfig.IsServer) { FollowRotHelper.Player = player; var rotParam = new FollowRotParam { CameraFreeYaw = player.cameraStateNew.FreeYaw, CameraFreeNowMode = player.cameraStateNew.FreeNowMode, CameraEulerAngle = player.cameraFinalOutputNew.EulerAngle, ClientTime = player.time.ClientTime }; characterBone.PreUpdate(rotParam, player.characterBoneInterface.CharacterBone); characterBone.SyncTo(player.characterBone); } var animator = player.thirdPersonAnimator.UnityAnimator; var state = player.stateInterface.State; var postureType = ThirdPersonAppearanceUtils.GetPosture(state); var action = player.stateInterface.State.GetActionState(); var keepAction = player.stateInterface.State.GetActionKeepState(); var posture = player.stateInterface.State.GetCurrentPostureState(); CodeRigBoneParam param = new CodeRigBoneParam { PitchAmplitude = player.orientation.Pitch - player.orientation.WeaponPunchPitch * 2, OverlayAnimationWeight = animator.GetLayerWeight(NetworkAnimatorLayer.PlayerUpperBodyOverlayLayer), PostureWhenOverlay = postureType, IsSight = state.GetActionKeepState() == ActionKeepInConfig.Sight || state.GetNextActionKeepState() == ActionKeepInConfig.Sight, SightHorizontalShift = appearanceP1.SightShift.Buff * player.firstPersonAppearance.SightHorizontalShift, SightVerticalShift = appearanceP1.SightShift.Buff * player.firstPersonAppearance.SightVerticalShift, SightShiftBuff = player.oxygenEnergyInterface.Oxygen.SightShiftBuff, IKActive = IKFilter.FilterPlayerIK(action, keepAction, posture), HeadPitch = player.characterBone.PitchHeadAngle, HeadYaw = player.characterBone.RotHeadAngle, HandPitch = player.characterBone.PitchHandAngle, HeadRotProcess = player.characterBone.HeadRotProcess, IsHeadRotCW = player.characterBone.IsHeadRotCW, WeaponPitch = player.characterBone.WeaponPitch, IsServer = SharedConfig.IsServer }; characterBone.Update(param); if (!SharedConfig.IsServer) { characterBone.WeaponRotUpdate(param); } }
public void PreUpdate(FollowRotParam param, ICharacterBone characterBone) { //人物正向和载具正向相差180度 var curAngle = param.CameraFreeYaw; var needReverse = FollowRotHelper.NeedReverse(); if (needReverse) { curAngle = curAngle + (curAngle > 0 ? -180 : 180); } if (curAngle * characterBone.LastHeadRotAngle < _horizontalHeadRotMax * _horizontalHeadRotMin ) //头部水平旋转角穿过+-180度(暂定最大旋转角度为+-60) { characterBone.LastHeadRotSlerpTime = param.ClientTime; characterBone.IsHeadRotCW = curAngle > 0; // needReverse // ? curAngle < 0 // : curAngle > 0; } if (FollowRotHelper.ForbidRot()) { characterBone.ForbidRot = true; } else if (param.CameraFreeNowMode != (byte)ECameraFreeMode.On && param.CameraEulerAngle == Vector3.zero) { characterBone.ForbidRot = false; } if (characterBone.ForbidRot) { characterBone.LastHeadRotAngle = 0; } else { characterBone.LastHeadRotAngle = curAngle; } }
public void PreUpdate(FollowRotParam param, ICharacterBone characterBone, float deltaTime) { //人物正向和载具正向相差180度 var curAngle = param.CameraFreeYaw; var needReverse = FollowRotHelper.NeedReverse(); if (needReverse) { curAngle = curAngle + (curAngle > 0 ? -180 : 180); } if (curAngle > NoHeadRotStart) { curAngle = 0; } if (curAngle < -NoHeadRotStart) { curAngle = 0; } if (FollowRotHelper.ForbidRot()) { characterBone.ForbidRot = true; } else { characterBone.ForbidRot = false; } var aimAngle = characterBone.ForbidRot ? 0 : curAngle; characterBone.LastHeadRotAngle = CalcuStepRotAngle(aimAngle, characterBone.LastHeadRotAngle, deltaTime); CalcCurrentHandPitch(FollowRotHelper.PitchHandAngle(), deltaTime); }
private void BoneUpdate(PlayerEntity player) { var characterBone = player.characterBoneInterface.CharacterBone; _fsmOutputs.ResetOutput(); characterBone.Execute(_fsmOutputs.AddOutput); _fsmOutputs.SetOutput(player); if (!SharedConfig.IsServer) { FollowRotHelper.Player = player; var rotParam = new FollowRotParam { CameraFreeYaw = player.cameraStateNew.FreeYaw, CameraFreeNowMode = player.cameraStateNew.FreeNowMode, CameraEulerAngle = player.cameraFinalOutputNew.EulerAngle, ClientTime = player.time.ClientTime }; characterBone.PreUpdate(rotParam, player.characterBoneInterface.CharacterBone, _deltaTime); characterBone.SyncTo(player.characterBone); } var animator = player.thirdPersonAnimator.UnityAnimator; var state = player.stateInterface.State; var action = player.stateInterface.State.GetActionState(); var nextAction = player.stateInterface.State.GetNextActionState(); var keepAction = player.stateInterface.State.GetActionKeepState(); var posture = player.stateInterface.State.GetCurrentPostureState(); var nextPosture = player.stateInterface.State.GetNextPostureState(); var movement = player.stateInterface.State.GetCurrentMovementState(); var postureType = ThirdPersonAppearanceUtils.GetPosture(posture); UpdateOffsetData(player); var param = new CodeRigBoneParam { PitchAmplitude = player.orientation.Pitch - player.orientation.AccPunchPitchValue * 2, OverlayAnimationWeight = animator.GetLayerWeight(NetworkAnimatorLayer.PlayerUpperBodyOverlayLayer), PostureWhenOverlay = postureType, IsSight = state.GetActionKeepState() == ActionKeepInConfig.Sight || state.GetNextActionKeepState() == ActionKeepInConfig.Sight, IsIntoSight = state.GetNextActionKeepState() == ActionKeepInConfig.Sight, SightHorizontalShift = /*appearanceP1.SightShift.Buff * */ player.firstPersonAppearance.SightHorizontalShift, SightVerticalShift = /*appearanceP1.SightShift.Buff * */ player.firstPersonAppearance.SightVerticalShift, SightShiftBuff = player.oxygenEnergyInterface.Oxygen.SightShiftBuff, IKActive = IKFilter.FilterPlayerIk(action, nextAction, keepAction, posture, nextPosture, movement), HeadPitch = player.characterBone.PitchHeadAngle, HeadYaw = player.characterBone.RotHeadAngle, CurrentHandPitch = player.characterBone.CurrentPitchHandAngle, WeaponRot = player.characterBone.WeaponRot, IsFire = action == ActionInConfig.Fire, IsServer = SharedConfig.IsServer, FirstPersonPositionOffset = player.characterBone.FirstPersonPositionOffset, FirstPersonRotationOffset = player.characterBone.FirstPersonRotationOffset, FirstPersonSightOffset = player.characterBone.FirstPersonSightOffset }; // DebugUtil.MyLog("SightVerticalShift:"+param.SightVerticalShift + "||SightVerticalShift:"+param.SightVerticalShift); if (!SharedConfig.IsServer) { characterBone.WeaponRotUpdate(param, _deltaTime); } else { characterBone.WeaponRotPlayback(param); } characterBone.Update(param); }
public void PreUpdate(FollowRotParam param, ICharacterBone characterBone, float deltaTime) { _followRot.PreUpdate(param, characterBone, deltaTime); }
public void PreUpdate(FollowRotParam param, ICharacterBone characterBone) { _followRot.PreUpdate(param, characterBone); }