public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var playerEntity = (PlayerEntity)getter.OwnerEntity; if (playerEntity.IsOnVehicle()) { var channel = cmd.ChangeChannel; if (channel > 0 && playerEntity.IsVehicleDriver()) { var vehicle = _context.GetEntityWithEntityKey(playerEntity.controlledVehicle.EntityKey); if (vehicle != null) { var assetInfo = vehicle.vehicleAssetInfo; if (assetInfo.HasRadio) { var gameData = vehicle.GetGameData(); if (gameData.SoundChannel != channel) { gameData.SetSoundChannel((EVehicleChannel)channel); } else { gameData.SetSoundChannel(EVehicleChannel.None); } _logger.DebugFormat("Change Vehicle {0} Sound Channel {1} Music Sound Id {2}", vehicle.entityKey.Value, gameData.SoundChannel, gameData.CurrentSoundId); } } } } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var player = getter.OwnerEntity as PlayerEntity; CheckPlayerLifeState(player); AppearanceUpdate(player); }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var playerEntity = (PlayerEntity)getter.OwnerEntity; if (null == playerEntity || null == playerEntity.playerGameState || null == playerEntity.characterControllerInterface) { return; } var gameState = playerEntity.playerGameState; switch (gameState.CurrentPlayerLifeState) { case PlayerLifeStateEnum.Reborn: Reborn(playerEntity); break; case PlayerLifeStateEnum.Revive: Revive(playerEntity); break; case PlayerLifeStateEnum.Dying: Dying(playerEntity); break; case PlayerLifeStateEnum.Dead: Dead(playerEntity); break; } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var player = getter.OwnerEntity as PlayerEntity; if (player.hasGamePlay) { var jobAttribute = player.gamePlay.JobAttribute; if (jobAttribute != _jobAttribute) { var sessionObjects = _contexts.session.clientSessionObjects; var generator = sessionObjects.UserCmdGenerator; if (jobAttribute == (int)EJobAttribute.EJob_Variant || jobAttribute == (int)EJobAttribute.EJob_Matrix || jobAttribute == (int)EJobAttribute.EJob_Hero) { generator.SwitchMode(EModeSwitch.Bio); /*GlowOutlineComponent.enabled = true;*/ } else { generator.SwitchMode(EModeSwitch.Normal); /*GlowOutlineComponent.enabled = false;*/ } _jobAttribute = jobAttribute; } /*UpdateGlowOutline();*/ } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var player = getter.OwnerEntity as PlayerEntity; var controller = player.WeaponController(); if (!player.gamePlay.IsLifeState(EPlayerLifeState.Alive) || !player.gamePlay.CanAutoPick()) { return; } if (cmd.ManualPickUpEquip > 0 && cmd.IsManualPickUp) { player.ModeController().DoPickup(player, cmd.ManualPickUpEquip); } if (cmd.AutoPickUpEquip != null && cmd.AutoPickUpEquip.Count > 0 && cmd.RenderTime - player.position.ServerTime > 500) { player.ModeController().AutoPickupWeapon(player, cmd.AutoPickUpEquip); } if (cmd.FilteredInput.IsInput(XmlConfig.EPlayerInput.IsDropWeapon)) { player.ModeController().Drop(player, controller.HeldSlotType, cmd); } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { if (cmd.PredicatedOnce) { return; } var playerEntity = (PlayerEntity)getter.OwnerEntity; if (CheckRideOffVehicle(playerEntity)) { RideOffVehicle(playerEntity); return; } if (cmd.IsUseAction) { if (!playerEntity.IsOnVehicle()) { if (cmd.UseType == (int)EUseActionType.Vehicle) { CheckAndRideOnVehicle(playerEntity, cmd.UseEntityId, cmd.UseVehicleSeat); } } else { RideOffVehicle(playerEntity); } } else if (cmd.ChangedSeat > 0) { ChangeSeatOnVehicle(playerEntity, cmd.ChangedSeat); } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var player = (PlayerEntity)getter.OwnerEntity; var moveUpdateData = player.moveUpdate; if (!moveUpdateData.NeedUpdate) { return; } var localMoveComponent = player.playerMove; var skyMoveUpdateData = player.skyMoveUpdate; if (moveUpdateData.MoveType == (int)MoveType.Fly) { player.playerSkyMove.MoveStage = skyMoveUpdateData.SkyMoveStage; player.playerSkyMove.Position = skyMoveUpdateData.SkyPosition; player.playerSkyMove.Rotation = skyMoveUpdateData.SkyRotation; player.playerSkyMove.LocalPlayerPosition = skyMoveUpdateData.SkyLocalPlayerPosition; player.playerSkyMove.LocalPlayerRotation = skyMoveUpdateData.SkyLocalPlayerRotation; player.orientation.Pitch = skyMoveUpdateData.Pitch; player.orientation.Yaw = skyMoveUpdateData.Yaw; player.orientation.Roll = skyMoveUpdateData.Roll; player.gamePlay.GameState = skyMoveUpdateData.GameState; player.playerSkyMove.IsMoveEnabled = skyMoveUpdateData.IsMoveEnabled; //_logger.ErrorFormat("get state:{0}, getMoveEnabled:{1} ", skyMoveUpdateData.GameState, // skyMoveUpdateData.IsMoveEnabled); } else { var controller = player.characterContoller.Value; var state = player.stateInterface.State; var postureInConfig = state.GetNextPostureState(); controller.SetCurrentControllerType(postureInConfig); controller.SetCharacterPosition(player.position.Value); controller.SetCharacterRotation(player.orientation.ModelView); controller.Rotate(player.orientation.RotationYaw, cmd.FrameInterval * 0.001f); if (moveUpdateData.BeginDive) { player.stateInterface.State.Dive(); } player.stateInterface.State.SetMoveInWater(moveUpdateData.MoveInWater); player.stateInterface.State.SetSteepAngle(moveUpdateData.TanSteepAngle); player.orientation.ModelPitch = moveUpdateData.ModelPitch; player.orientation.ModelYaw = moveUpdateData.ModelYaw; localMoveComponent.SpeedRatio = player.moveUpdate.SpeedRatio; localMoveComponent.MoveSpeedRatio = player.moveUpdate.MoveSpeedRatio; } localMoveComponent.Velocity = moveUpdateData.Velocity; localMoveComponent.IsGround = moveUpdateData.IsGround; localMoveComponent.IsCollided = moveUpdateData.IsCollided; UpdatePosition(player, moveUpdateData); // _logger.ErrorFormat(" IsC ollided:{1},IsGround:{2}", moveUpdateData.IsCollided,moveUpdateData.IsGround); }
public CmdTask(int payerIdx, IPlayerUserCmdGetter getter, IUserCmd userCmd, TaskInfo taskInfo, int threadIdx) { PayerIdx = payerIdx; Getter = getter; UserCmd = userCmd; TaskInfo = taskInfo; ThreadIdx = threadIdx; }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity player = getter.OwnerEntity as PlayerEntity; if (player.hasNetworkAnimator) { Logger.ErrorFormat("seq:{0} NetworkAnimator:{1}", cmd.Seq, player.networkAnimator); } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity player = getter.OwnerEntity as PlayerEntity; if (player != null && Filter(player) && FilterCmd(cmd)) { ExecuteUserCmd(player, cmd); } }
void IUserCmdExecuteSystem.ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity playerEntity = (PlayerEntity)getter.OwnerEntity; var stateManager = playerEntity.stateInterface.State; ComponentSynchronizer.SyncToStateComponent(playerEntity.state, stateManager); ComponentSynchronizer.SyncToStateInterVarComponent(playerEntity.stateInterVar, stateManager); }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity playerEntity = (PlayerEntity)getter.OwnerEntity; var stateManager = playerEntity.stateInterface.State; ComponentSynchronizer.SyncFromStateBeforeComponent(playerEntity.stateBefore, stateManager); ComponentSynchronizer.SyncFromStateInterVarBeforeComponent(playerEntity.stateInterVarBefore, stateManager); }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity player = getter.OwnerEntity as PlayerEntity; if (player.gamePlay.IsLifeState(EPlayerLifeState.Dead) || player.gamePlay.IsLastLifeState(EPlayerLifeState.Dead)) { return; } FirstPersonAppearanceUpdate(player); }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var player = getter.OwnerEntity as PlayerEntity; if (null != player && (player.gamePlay.IsLifeState(EPlayerLifeState.Dead) || player.gamePlay.IsLastLifeState(EPlayerLifeState.Dead))) { return; } SyncSightComponent(player); }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var player = getter.OwnerEntity as PlayerEntity; if (player == null) { return; } CommonUpdate(player, cmd); LastTime = cmd.ClientTime; }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { if (cmd.PredicatedOnce) { return; } PlayerEntity player = (PlayerEntity)getter.OwnerEntity; //服务器通过tcp指令修改客户端位置 CorrectPositionByServer(cmd, player); CheckPlayerLifeState(player); var updateComponent = player.moveUpdate; updateComponent.LastPosition = player.position.Value.ShiftedToFixedVector3(); updateComponent.Reset(); if (!CanPlayerMove(player)) { return; } player.playerMove.ClearState(); // swimhandler和divehandler未解耦,handler内部函数声明为static,解耦后可以不使用switch MoveType moveType = GetPlayerMoveType(player); switch (moveType) { case MoveType.Land: LandHandler.Move(_contexts, player, cmd.FrameInterval * 0.001f); break; case MoveType.Swim: SwimHandler.Move(_contexts, player, cmd.FrameInterval * 0.001f); break; case MoveType.Dive: DiveHandler.Move(_contexts, player, cmd.FrameInterval * 0.001f); break; case MoveType.Fly: FlyHandler.Move(player, cmd, cmd.FrameInterval * 0.001f); break; default: break; } SyncPlayerMove(player, moveType); }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var player = getter.OwnerEntity as PlayerEntity; if (null == player) { Logger.Error("owner entity is not player entity "); return; } player.appearanceInterface.Appearance.UpdateAvatar(); }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var player = (PlayerEntity)getter.OwnerEntity; if (player.gamePlay.IsLifeState(EPlayerLifeState.Dead)) { // gamePlay有对应的处理,这里不需要 return; } UpdateTransform(player, cmd.FrameInterval / 1000.0f); }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity player = getter.OwnerEntity as PlayerEntity; if (!player.gamePlay.IsDead()) { if (player.hasOxygenEnergyInterface && player.oxygenEnergyInterface.Oxygen.InDivingDeffState) { player.tip.TipType = ETipType.OutOfOxygen; } } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity player = (PlayerEntity)getter.OwnerEntity; if (!player.hasStatisticsData) { return; } StatisticsData statisticsData = player.statisticsData.Statistics; if (player.time.ClientTime - statisticsData.LastSamplingTime < 1000) { return; } _startPos.Set(statisticsData.LastPosition.x, statisticsData.LastPosition.z); _endPos.Set(player.position.Value.x, player.position.Value.z); float moveDis = Vector2.Distance(_startPos, _endPos); //总移动距离 statisticsData.TotalMoveDistance += moveDis; //载具移动距离 if (player.IsOnVehicle()) { statisticsData.VehicleMoveDistance += moveDis; } statisticsData.LastPosition = player.position.Value; //游泳时间 if (player.stateInterface.State.GetCurrentPostureState() == PostureInConfig.Swim || player.stateInterface.State.GetCurrentPostureState() == PostureInConfig.Dive) { if (statisticsData.LastIsSwimState) { statisticsData.SwimTime += player.time.ClientTime - statisticsData.LastSwimTime; } statisticsData.LastIsSwimState = true; statisticsData.LastSwimTime = player.time.ClientTime; } else { statisticsData.LastIsSwimState = false; } //治疗量(模式中获取) //statisticsData.CureVolume = 0; //加速时间(模式中获取) //statisticsData.AccSpeedTime = 0; //全副武装(模式中获取) //statisticsData.IsFullArmed = false; //最后统计时间 statisticsData.LastSamplingTime = player.time.ClientTime; }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var weaponController = GameModuleManagement.Get <PlayerWeaponController>(getter.OwnerEntityKey.EntityId); cmd.IsAutoFire = weaponController.HeldWeaponAgent.RunTimeComponent.NeedAutoBurstShoot; cmd.IsAutoReload = weaponController.HeldWeaponAgent.RunTimeComponent.NeedAutoReload; weaponController.InternalUpdate(); #if UNITY_EDITOR if (cmd.IsYDown) { } #endif }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var player = getter.OwnerEntity as PlayerEntity; if (null == player) { return; } if (cmd.IsHoldBreath && player.IsAiming()) { if (null == player) { Logger.Error("owner entity is not player entity "); return; } if (!player.hasAppearanceInterface) { Logger.Error("player has no appearance interface "); return; } if (!player.oxygenEnergyInterface.Oxygen.InShiftState) { player.oxygenEnergyInterface.Oxygen.ShiftVeryTime = player.time.ClientTime; } player.oxygenEnergyInterface.Oxygen.InShiftState = true; } else { if (!player.hasAppearanceInterface) { Logger.Error("player has no appearance interface "); return; } if (player.oxygenEnergyInterface.Oxygen.InShiftState) { player.oxygenEnergyInterface.Oxygen.ShiftVeryTime = player.time.ClientTime; } player.oxygenEnergyInterface.Oxygen.InShiftState = false; } if (player.oxygenEnergyInterface.Oxygen.InShiftState) { player.appearanceInterface.FirstPersonAppearance.SightShift.SetHoldBreath(true); } else { player.appearanceInterface.FirstPersonAppearance.SightShift.SetHoldBreath(false); } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity player = (PlayerEntity)getter.OwnerEntity; if (player.playerMove.IsGround && !player.playerMove.FirstOnGround) { player.playerMove.FirstOnGround = true; } else if (player.playerMove.FirstOnGround && !player.playerMove.LastIsCollided && player.playerMove.IsCollided) { float damage = 0; //水平伤害 Vector2 inVel = new Vector2(player.playerMove.LastVelocity.x, player.playerMove.LastVelocity.z); Vector2 outVel = new Vector2(0, 0);//(player.playerMove.Velocity.x, player.playerMove.Velocity.z); float xzSpeed = (inVel - outVel).magnitude; float hurtSpeedHorizontal = SpeedHorizontal; if (player.playerMove.SpeedAffect > 0 && !player.IsOnVehicle())//有加速buff且不在载具内 { hurtSpeedHorizontal *= player.playerMove.SpeedAffect + 1; } if (xzSpeed >= hurtSpeedHorizontal) { damage += (xzSpeed * 3.6f - 30) * 2; } //垂直伤害 float ySpeed = -player.playerMove.LastVelocity.y; float hurtSpeedVertical = SpeedVertical; if (player.playerMove.JumpAffect > 0 && !player.IsOnVehicle()) { hurtSpeedVertical *= player.playerMove.JumpAffect + 1; } if (ySpeed >= hurtSpeedVertical) { //damage += (ySpeed - hurtSpeedVertical) * 14; 伤害取二者大值而非相加 damage = Mathf.Max(damage, (ySpeed - hurtSpeedVertical) * 14); } if (damage > 0 && SharedConfig.HaveFallDamage) { VehicleDamageUtility.DoPlayerDamage(_contexts, null, player, damage, EUIDeadType.Fall); } } player.playerMove.LastIsCollided = player.playerMove.IsCollided; player.playerMove.LastVelocity = player.playerMove.Velocity; }
/// <summary> /// 槽位切换&模式切换 /// </summary> /// <param name="getter"></param> /// <param name="cmd"></param> public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { if (cmd.FilteredInput.IsInput(XmlConfig.EPlayerInput.IsSwitchWeapon) && cmd.CurWeapon != (int)EWeaponSlotType.None) { var newSlot = getter.OwnerEntityKey.ModeController().GetSlotByIndex(cmd.CurWeapon); getter.OwnerEntityKey.WeaponController().SwitchIn(newSlot); return; } if (cmd.FilteredInput.IsInput(XmlConfig.EPlayerInput.IsSwitchFireMode)) { getter.OwnerEntityKey.WeaponController().SwitchFireMode(); return; } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { /*throw new System.NotImplementedException();*/ var player = getter.OwnerEntity as PlayerEntity; if (player.hasGamePlay) { if (_witness != player.gamePlay.Witness) { PlayerEntityUtility.SetActive(player, !player.gamePlay.Witness, EActiveMask.Witness); _witness = player.gamePlay.Witness; } } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity player = (PlayerEntity)getter.OwnerEntity; if (player.gamePlay.IsLifeState(EPlayerLifeState.Dead)) { return; } if (!player.hasPlayerMove || !player.hasStateInterface || !player.hasOrientation) { return; } var state = player.stateInterface.State; var orientationPitch = player.orientation.Pitch; if (state.GetNextPostureState() == PostureInConfig.Dive) { float upDownValue = player.playerMove.UpDownValue; if (cmd.IsSpaceDown || cmd.IsCDown) { upDownValue = _controller.UpdateValue(cmd.FrameInterval * 0.001f, cmd.IsSpaceDown, cmd.IsCDown, player.playerMove.UpDownValue); } else if ((state.IsForth || state.IsBack) && !cmd.IsSpaceDown && !cmd.IsCDown) { upDownValue = _controller.UpdateToTarget(cmd.FrameInterval * 0.001f, Mathf.Clamp((state.IsForth ? -1.0f : -1.0f) * orientationPitch / SingletonManager.Get <CameraConfigManager>().GetRoleConfig(player.playerInfo.RoleModelId) .PoseConfigs[(int)ECameraPoseMode.Stand].PitchLimit.Max * state.VerticalValue , -1, 1), upDownValue); } else { upDownValue = _controller.UpdateValue(cmd.FrameInterval * 0.001f, cmd.IsSpaceDown, cmd.IsCDown, player.playerMove.UpDownValue); } state.SetDiveUpDownValue(upDownValue); player.playerMove.UpDownValue = upDownValue; } else { player.playerMove.UpDownValue = 0; } }
// private PlayerStateCollectorPool _stateCollectorPool; // // public UserCmdPreExecuteSystem( // ) // { // _stateCollectorPool = gameStateProcessorFactory; // } public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd userCmd) { if (userCmd.Seq != getter.LastCmdSeq + 1) { _logger.ErrorFormat("{2} lost user cmd last {0}, cur {1}", getter.LastCmdSeq, userCmd.Seq, getter.OwnerEntityKey); } if (_logger.IsDebugEnabled) { _logger.DebugFormat("processing user cmd {0}", userCmd); } userCmd.FilteredInput = getter.GetFiltedInput(userCmd); }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity playerEntity = getter.OwnerEntity as PlayerEntity; if (!playerEntity.hasCameraStateNew) { return; } if (!playerEntity.hasCameraStateOutputNew) { return; } CopyClientOutputToComponent(playerEntity); }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { PlayerEntity player = getter.OwnerEntity as PlayerEntity; if (null == player) { Logger.Error("Owner is not player"); return; } if (player.triggerEvent.NeedUnmountWeapon) { player.WeaponController().UnArmWeapon(false); } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { var player = (PlayerEntity)getter.OwnerEntity; if (player.IsOnVehicle()) { player.position.AlwaysEqual = true; player.orientation.AlwaysEqual = true; } else { player.position.AlwaysEqual = false; player.orientation.AlwaysEqual = false; } }