Skip to content

Commit d87bd75

Browse files
fix
making sure the first entry is set to having reached its final point.
1 parent cfcd70b commit d87bd75

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,15 +352,18 @@ private void TryConsumeFromBuffer(double renderTime, double minDeltaTime, double
352352
InterpolateState.Target = target;
353353

354354
alreadyHasBufferItem = true;
355+
InterpolateState.CurrentValue = target.Item;
355356
InterpolateState.PredictValue = InterpolateState.CurrentValue;
356357
InterpolateState.PreviousValue = InterpolateState.CurrentValue;
357358
InterpolateState.Phase1Value = InterpolateState.CurrentValue;
358359
InterpolateState.Phase2Value = InterpolateState.CurrentValue;
359360
InterpolateState.SetTimeToTarget(minDeltaTime);
360361
InterpolateState.TimeToTargetValue = minDeltaTime;
361362
startTime = InterpolateState.Target.Value.TimeSent;
362-
InterpolateState.TargetReached = false;
363+
InterpolateState.TargetReached = true;
363364
InterpolateState.PredictingNext = false;
365+
InterpolateState.LerpT = 1.0f;
366+
InterpolateState.LerpTPredict = 1.0f;
364367
InterpolateState.MaxDeltaTime = maxDeltaTime;
365368
}
366369
else
@@ -442,9 +445,9 @@ internal T Update(float deltaTime, double tickLatencyAsTime, double minDeltaTime
442445
//InterpolateState.PreviousValue = SmoothDamp(InterpolateState.PreviousValue, InterpolateState.Target.Value.Item, ref m_RateOfChange, (float)InterpolateState.TimeToTargetValue, (float)InterpolateState.DeltaTime);
443446
//var predictedTime = InterpolateState.PredictingNext ? InterpolateState.DeltaTime : Math.Min(InterpolateState.TimeToTargetValue, InterpolateState.DeltaTime + InterpolateState.AverageDeltaTime);
444447
//InterpolateState.PredictValue = SmoothDamp(InterpolateState.PredictValue, InterpolateState.PredictTarget, ref m_PredictedRateOfChange, (float)InterpolateState.TimeToTargetValue, (float)predictedTime);
445-
InterpolateState.PreviousValue = SmoothDamp(InterpolateState.CurrentValue, InterpolateState.Target.Value.Item, ref m_RateOfChange, (float)InterpolateState.TimeToTargetValue, (float)InterpolateState.DeltaTime);
448+
InterpolateState.PreviousValue = SmoothDamp(InterpolateState.PreviousValue, InterpolateState.Target.Value.Item, ref m_RateOfChange, (float)InterpolateState.TimeToTargetValue, (float)InterpolateState.DeltaTime);
446449
var predictedTime = InterpolateState.PredictingNext ? InterpolateState.DeltaTime : Math.Min(InterpolateState.TimeToTargetValue, InterpolateState.DeltaTime + InterpolateState.AverageDeltaTime);
447-
InterpolateState.PredictValue = SmoothDamp(InterpolateState.PreviousValue, InterpolateState.Target.Value.Item, ref m_PredictedRateOfChange, (float)InterpolateState.TimeToTargetValue, (float)predictedTime);
450+
InterpolateState.PredictValue = SmoothDamp(InterpolateState.PredictValue, InterpolateState.Target.Value.Item, ref m_PredictedRateOfChange, (float)InterpolateState.TimeToTargetValue, (float)predictedTime);
448451
// Determine if smooth dampening is enabled to get our lerp "t" time
449452
var timeDelta = lerpSmoothing ? deltaTime / MaximumInterpolationTime : deltaTime;
450453
// Lerp between the PreviousValue and PredictedValue using the calculated time delta

0 commit comments

Comments
 (0)