Skip to content

Commit 5b0f392

Browse files
update
Reverting the change to fix that makes the original lerp properly calculate the time to target as opposed to always calculating 2x the time to target because all of the unit interpolator tests are specifically written for this specific flaw.
1 parent 1202fe7 commit 5b0f392

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

com.unity.netcode.gameobjects/Runtime/Components/Interpolator/BufferedLinearInterpolator.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ internal T Update(float deltaTime, double tickLatencyAsTime, double minDeltaTime
475475
/// This version of TryConsumeFromBuffer adheres to the original BufferedLinearInterpolator buffer consumption pattern.
476476
/// </remarks>
477477
/// <param name="renderTime"></param>
478-
private void TryConsumeFromBuffer(double renderTime)
478+
private void TryConsumeFromBuffer(double renderTime, double serverTime)
479479
{
480480
BufferedItem? previousItem = null;
481481
var alreadyHasBufferItem = false;
@@ -488,7 +488,7 @@ private void TryConsumeFromBuffer(double renderTime)
488488
break;
489489
}
490490

491-
if ((potentialItem.TimeSent <= renderTime) &&
491+
if ((potentialItem.TimeSent <= serverTime) &&
492492
(!InterpolateState.Target.HasValue || InterpolateState.Target.Value.TimeSent < potentialItem.TimeSent))
493493
{
494494
if (m_BufferQueue.TryDequeue(out BufferedItem target))
@@ -500,7 +500,6 @@ private void TryConsumeFromBuffer(double renderTime)
500500
InterpolateState.PreviousValue = InterpolateState.CurrentValue;
501501
InterpolateState.StartTime = target.TimeSent;
502502
InterpolateState.EndTime = target.TimeSent;
503-
InterpolateState.TargetReached = false;
504503
}
505504
else
506505
{
@@ -542,7 +541,7 @@ private void TryConsumeFromBuffer(double renderTime)
542541
/// <returns>The newly interpolated value of type 'T'</returns>
543542
public T Update(float deltaTime, double renderTime, double serverTime)
544543
{
545-
TryConsumeFromBuffer(renderTime);
544+
TryConsumeFromBuffer(renderTime, serverTime);
546545
// Only interpolate when there is a start and end point and we have not already reached the end value
547546
if (InterpolateState.Target.HasValue && !InterpolateState.TargetReached)
548547
{
@@ -603,9 +602,9 @@ public T Update(float deltaTime, NetworkTime serverTime)
603602
/// <summary>
604603
/// Used for internal testing
605604
/// </summary>
606-
internal T UpdateInternal(float deltaTime, NetworkTime serverTime)
605+
internal T UpdateInternal(float deltaTime, NetworkTime serverTime, int ticksAgo = 1)
607606
{
608-
return Update(deltaTime, serverTime.TimeTicksAgo(1).Time, serverTime.Time);
607+
return Update(deltaTime, serverTime.TimeTicksAgo(ticksAgo).Time, serverTime.Time);
609608
}
610609

611610
/// <summary>

0 commit comments

Comments
 (0)