private int PushUntilLastStep(IEntity entity, Type[] inputTypes, INetworkTimeline timeline) { var networkIdentityComponent = entity.GetComponent <NetworkIdentityComponent>(); var identity = networkIdentityComponent.Identity; var timePointWithLerp = timePointWithLerpDict[identity][timeline]; var tickId = timePointWithLerp.TickId; if (tickId < networkIdentityComponent.TickIdWhenCreated) { tickId = networkIdentityComponent.TickIdWhenCreated; } if (!timePointWithLerp.IsPlaying) { while (LockstepUtility.HasTickId(tickId)) { var userInputData = GetUserInputDataByInputTypes(tickId, identity.UserId, inputTypes); for (int i = 0; i < userInputData.Length; i++) { timePointWithLerp.AddRealtimeData(new TimePointData(tickId, LockstepUtility.GetDeltaTime(tickId), userInputData[i])); } tickId++; } } timePointWithLerp.TickId = tickId; return(tickId); }
private void Forecast(Type[] inputTypes, INetworkTimeline timeline) { var timePointWithLerp = defaultTimePointWithLerpDict[timeline]; if (UseForecast && !timePointWithLerp.IsPlaying) { var tickId = timePointWithLerp.TickId - 1; if (LockstepUtility.HasTickId(tickId)) { var deltaTime = LockstepUtility.GetDeltaTime(tickId); var userInputData = GetUserInputDataByInputTypes(tickId, inputTypes); for (int i = 0; i < userInputData.Length; i++) { timePointWithLerp.Forecast(new TimePointData(tickId, deltaTime, userInputData[i]), MaxForecastSteps); } } } }
private int PushUntilLastStep(Type[] inputTypes, INetworkTimeline timeline) { var timePointWithLerp = defaultTimePointWithLerpDict[timeline]; var tickId = timePointWithLerp.TickId; if (!timePointWithLerp.IsPlaying) { while (LockstepUtility.HasTickId(tickId)) { var userInputData = GetUserInputDataByInputTypes(tickId, inputTypes); for (int i = 0; i < userInputData.Length; i++) { timePointWithLerp.AddRealtimeData(new TimePointData(tickId, LockstepUtility.GetDeltaTime(tickId), userInputData[i])); } tickId++; } } timePointWithLerp.TickId = tickId; return(tickId); }