public static ReusableList <IUserCmd> FromProtoBuf(UserCmdMessage message) { ReusableList <IUserCmd> list = ReusableList <IUserCmd> .Allocate(); var count = message.UserCmdList.Count; for (int i = 0; i < count; i++) { var item = message.UserCmdList[i]; UserCmd cmd = UserCmd.Allocate(); cmd.RenderTime = item.RenderTime; cmd.FrameInterval = item.FrameInterval; cmd.MoveHorizontal = item.MoveHorizontal; cmd.MoveVertical = item.MoveVertical; cmd.MoveUpDown = item.MoveUpDown; cmd.Seq = item.Seq; cmd.DeltaPitch = item.DeltaPitch; cmd.DeltaYaw = item.DeltaYaw; cmd.Buttons = item.Buttons; cmd.BeState = item.BeState; cmd.SwitchNumber = item.SwitchNumber; cmd.ChangedSeat = item.ChangedSeat; cmd.ChangeChannel = item.ChangeChannel; cmd.SnapshotId = item.SnapshotId; cmd.CurWeapon = item.CurWeapon; cmd.PickUpEquip = item.PickUpEquip; cmd.UseEntityId = item.UseVehicleId; cmd.UseVehicleSeat = item.UseVehicleSeat; cmd.UseType = item.UseType; cmd.BagIndex = item.BagIndex; list.Value.Add(cmd); } return(list); }
public UserCmd GenerateUserCmd(IUserCmdOwnAdapter player, int intverval) { UpdateLookAt(player, _userCmdProvider.LookAt); if (_userCmdProvider.HasPath) { var vel = player.PlayerTransform.InverseTransformVector(_userCmdProvider.DesirwdVelocity); vel.y = 0; vel = vel.normalized; _userCmd.MoveVertical = vel.z; _userCmd.MoveHorizontal = vel.x; if (_userCmd.DeltaYaw > 1) { _userCmd.IsSlightWalk = true; } else if (_userCmdProvider.DesirwdVelocity.magnitude > 2) { _userCmd.IsRun = true; } else if (_userCmdProvider.DesirwdVelocity.magnitude > 0.5) { } else { _userCmd.IsSlightWalk = true; } } _userCmd.IsCrouch = _userCmdProvider.IsCrouch; _userCmd.IsJump = _userCmdProvider.IsJump; _userCmd.IsProne = _userCmdProvider.IsProne; _userCmd.IsPeekLeft = _userCmdProvider.IsPeekLeft; _userCmd.IsPeekRight = _userCmdProvider.IsPeekRight; _userCmd.IsF = _userCmdProvider.IsF; _userCmd.IsLeftAttack = _userCmdProvider.IsLeftAttack; _userCmd.IsReload = _userCmdProvider.IsReload; //_userCmdProvider.Reset(); // _userCmdProvider.LookAt = Quaternion.Euler(0,0, // 0); _userCmd.FrameInterval = intverval; _userCmd.Seq = _seq++; var rc = UserCmd.Allocate(); _userCmd.CopyTo(rc); _userCmd.Reset(); return(rc); }
public UserCmd GenerateUserCmd(IUserCmdOwnAdapter player, int intverval) { _userCmd.Seq = _seq++; _userCmd.FrameInterval = intverval; _userCmd.ChangedSeat = ChangeSeat(); _userCmd.ChangeChannel = ChangeChannel(); var rc = UserCmd.Allocate(); _userCmd.CopyTo(rc); _userCmd.Reset(); return(rc); }
public UserCmd GenerateUserCmd(IUserCmdOwnAdapter player, int intverval) { logger.DebugFormat("GenerateUserCmd:{0}", MyGameTime.seq); userCmd.Seq = MyGameTime.seq; userCmd.FrameInterval = intverval; userCmd.ChangedSeat = ChangeSeat(); userCmd.ChangeChannel = ChangeChannel(); var rc = UserCmd.Allocate(); userCmd.CopyTo(rc); userCmd.Reset(); return(rc); }
private void MergeUserCmd(PlayerEntity player) { var tempList = player.userCmd.UserCmdStepList; UserCmd last = UserCmd.Allocate(); last.ReInit(); ((UserCmd)tempList.Last()).CopyTo(last); last.Seq = _userCmdSeq++; last.FrameInterval = 0; last.DeltaYaw = 0; last.DeltaPitch = 0; foreach (var cmd in tempList) { last.DeltaYaw += cmd.DeltaYaw; last.DeltaPitch += cmd.DeltaPitch; last.FrameInterval += cmd.FrameInterval; last.Buttons |= cmd.Buttons; last.RenderTime = cmd.RenderTime; last.ClientTime = cmd.ClientTime; last.SnapshotId = cmd.SnapshotId; last.PredicatedOnce = cmd.PredicatedOnce; last.MoveHorizontal = cmd.MoveHorizontal; last.MoveVertical = cmd.MoveVertical; last.MoveUpDown = cmd.MoveUpDown; last.ChangedSeat = cmd.ChangedSeat > 0 ? cmd.ChangedSeat : last.ChangedSeat; last.ChangeChannel = cmd.ChangeChannel > 0 ? cmd.ChangeChannel : last.ChangeChannel; last.CurWeapon = cmd.CurWeapon == 0 ? last.CurWeapon : cmd.CurWeapon; last.ManualPickUpEquip = cmd.ManualPickUpEquip > 0 ? cmd.ManualPickUpEquip : last.ManualPickUpEquip; last.AutoPickUpEquip = UserCmd.CopyList(last.AutoPickUpEquip, cmd.AutoPickUpEquip); last.UseEntityId = cmd.UseEntityId > 0 ? cmd.UseEntityId : last.UseEntityId; last.UseVehicleSeat = cmd.UseVehicleSeat > 0 ? cmd.UseVehicleSeat : last.UseVehicleSeat; last.UseType = cmd.UseType > 0 ? cmd.UseType : last.UseType; last.BagIndex = cmd.BagIndex > 0 ? cmd.BagIndex : last.BagIndex; //_logger.ErrorFormat("cmd;{0} {1}",cmd.CurWeapon,last.CurWeapon); cmd.ReleaseReference(); } tempList.Clear(); player.userCmd.AddLatest(last); last.ReleaseReference(); }
public void SyncToEntity(IPlayerUserCmdGetter getter, UpdateLatestPacakge package) { PlayerEntity playerEntity = getter.OwnerEntity as PlayerEntity; IGameEntity gameEntity = playerEntity.entityAdapter.SelfAdapter; int count = package.UpdateComponents.Count; for (var i = 0; i < count; i++) { IUpdateComponent component = package.UpdateComponents[i]; var id = component.GetComponentId(); var target = gameEntity.GetComponent(id); if (target == null) { target = gameEntity.AddComponent(id); } var p = GetProfile(component.GetComponentId()); try { p.BeginProfileOnlyEnableProfile(); ((INetworkObject)target).CopyFrom(component); if (id == (int)EComponentIds.SendUserCmd) { UserCmd cmd = UserCmd.Allocate(); CopyForm(cmd, component as SendUserCmdComponent); playerEntity.userCmd.AddLatest(cmd); cmd.Seq = package.Head.LastUserCmdSeq; cmd.SnapshotId = package.Head.LastSnapshotId; cmd.ReleaseReference(); } } finally { p.EndProfileOnlyEnableProfile(); } } }
public void SyncToEntity(IUserCmdOwner owner, UpdateLatestPacakge package) { PlayerEntity playerEntity = owner.OwnerEntity as PlayerEntity; IGameEntity gameEntity = playerEntity.entityAdapter.SelfAdapter; foreach (var component in package.UpdateComponents) { var target = gameEntity.GetComponent(component.GetComponentId()); if (target == null) { target = gameEntity.AddComponent(component.GetComponentId()); } ((INetworkObject)target).CopyFrom(component); if (component is SendUserCmdComponent) { UserCmd cmd = UserCmd.Allocate(); CopyForm(cmd, component as SendUserCmdComponent); playerEntity.userCmd.AddLatest(cmd); cmd.Seq = package.Head.UserCmdSeq; cmd.SnapshotId = package.Head.LastSnapshotId; cmd.ReleaseReference(); } } }