private void Update() { LockstepFactory.Update(); UserInputs userInputs = LockstepUtility.GetUserInputs(); byte[] dataBytes = MessagePackUtility.Serialize(userInputs); NetworkSystem.Publish(RequestCode.Input, dataBytes); }
public static LockstepTestCaseData NewLockstepTestCaseData(float nextSecond, int userId, IInput[] inputs) { var inputData = new byte[inputs.Length][]; for (int i = 0; i < inputData.Length; i++) { inputData[i] = MessagePackUtility.Serialize(inputs[i]); } return(new LockstepTestCaseData() { NextSecond = nextSecond, UserInputs = new UserInputs() { UserId = userId, InputData = inputData, }, }); }
public static UserInputs GetUserInputs() { var bytes = new List <byte[]>(); var e = inputDict.GetEnumerator(); while (e.MoveNext()) { for (int i = 0; i < e.Current.Value.Count; i++) { bytes.Add(MessagePackUtility.Serialize(e.Current.Value[i])); } } UserInputs userInputs = new UserInputs(); userInputs.Index = Index; userInputs.TickId = lockstepInputs.Count; userInputs.InputData = bytes.ToArray(); inputDict.Clear(); Index++; return(userInputs); }
public override void OnEnable() { base.OnEnable(); NetworkSystem.Receive(RequestCode.Input).Subscribe(data => { if (data.Mode == SessionMode.Offline) { UserInputs userInputs = MessagePackUtility.Deserialize <UserInputs>(data.Value); userInputs.UserId = 0; LockstepInputs lockstepInputs = LockstepUtility.CreateLockstepInputs(userInputs); NetworkSystem.Publish(RequestCode.Lockstep, MessagePackUtility.Serialize(lockstepInputs)); } }).AddTo(this.Disposer); NetworkSystem.Receive(RequestCode.Lockstep).Subscribe(data => { LockstepInputs lockstepInputs = MessagePackUtility.Deserialize <LockstepInputs>(data.Value); LockstepUtility.AddToTimeline(lockstepInputs); }).AddTo(this.Disposer); }