Skip to content

Commit c0d794f

Browse files
update
Still had one more line of code needed to go back to original lerp buffer consumption where the time to target is always 2x the actual time to target (it ends up consuming 2 state updates for each non-authority update). Making sure some of the debugging BLI accessor methods in NetworkTransform are still accessible for internal testing purposes.
1 parent ac55f48 commit c0d794f

File tree

2 files changed

+40
-37
lines changed

2 files changed

+40
-37
lines changed

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

Lines changed: 39 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -477,55 +477,58 @@ internal T Update(float deltaTime, double tickLatencyAsTime, double minDeltaTime
477477
/// <param name="renderTime"></param>
478478
private void TryConsumeFromBuffer(double renderTime, double serverTime)
479479
{
480-
BufferedItem? previousItem = null;
481-
var alreadyHasBufferItem = false;
482-
while (m_BufferQueue.TryPeek(out BufferedItem potentialItem))
480+
if (!InterpolateState.Target.HasValue || (InterpolateState.Target.Value.TimeSent <= renderTime))
483481
{
484-
// If we are still on the same buffered item (FIFO Queue), then exit early as there is nothing
485-
// to consume.
486-
if (previousItem.HasValue && previousItem.Value.TimeSent == potentialItem.TimeSent)
482+
BufferedItem? previousItem = null;
483+
var alreadyHasBufferItem = false;
484+
while (m_BufferQueue.TryPeek(out BufferedItem potentialItem))
487485
{
488-
break;
489-
}
486+
// If we are still on the same buffered item (FIFO Queue), then exit early as there is nothing
487+
// to consume.
488+
if (previousItem.HasValue && previousItem.Value.TimeSent == potentialItem.TimeSent)
489+
{
490+
break;
491+
}
490492

491-
if ((potentialItem.TimeSent <= serverTime) &&
492-
(!InterpolateState.Target.HasValue || InterpolateState.Target.Value.TimeSent < potentialItem.TimeSent))
493-
{
494-
if (m_BufferQueue.TryDequeue(out BufferedItem target))
493+
if ((potentialItem.TimeSent <= serverTime) &&
494+
(!InterpolateState.Target.HasValue || InterpolateState.Target.Value.TimeSent < potentialItem.TimeSent))
495495
{
496-
if (!InterpolateState.Target.HasValue)
497-
{
498-
InterpolateState.Target = target;
499-
alreadyHasBufferItem = true;
500-
InterpolateState.PreviousValue = InterpolateState.CurrentValue;
501-
InterpolateState.StartTime = target.TimeSent;
502-
InterpolateState.EndTime = target.TimeSent;
503-
}
504-
else
496+
if (m_BufferQueue.TryDequeue(out BufferedItem target))
505497
{
506-
if (!alreadyHasBufferItem)
498+
if (!InterpolateState.Target.HasValue)
507499
{
500+
InterpolateState.Target = target;
508501
alreadyHasBufferItem = true;
509-
InterpolateState.StartTime = InterpolateState.Target.Value.TimeSent;
510502
InterpolateState.PreviousValue = InterpolateState.CurrentValue;
511-
InterpolateState.TargetReached = false;
503+
InterpolateState.StartTime = target.TimeSent;
504+
InterpolateState.EndTime = target.TimeSent;
505+
}
506+
else
507+
{
508+
if (!alreadyHasBufferItem)
509+
{
510+
alreadyHasBufferItem = true;
511+
InterpolateState.StartTime = InterpolateState.Target.Value.TimeSent;
512+
InterpolateState.PreviousValue = InterpolateState.CurrentValue;
513+
InterpolateState.TargetReached = false;
514+
}
515+
InterpolateState.EndTime = target.TimeSent;
516+
InterpolateState.Target = target;
517+
InterpolateState.TimeToTargetValue = InterpolateState.EndTime - InterpolateState.StartTime;
512518
}
513-
InterpolateState.EndTime = target.TimeSent;
514-
InterpolateState.Target = target;
515-
InterpolateState.TimeToTargetValue = InterpolateState.EndTime - InterpolateState.StartTime;
516519
}
517520
}
518-
}
519-
else
520-
{
521-
break;
522-
}
521+
else
522+
{
523+
break;
524+
}
523525

524-
if (!InterpolateState.Target.HasValue)
525-
{
526-
break;
526+
if (!InterpolateState.Target.HasValue)
527+
{
528+
break;
529+
}
530+
previousItem = potentialItem;
527531
}
528-
previousItem = potentialItem;
529532
}
530533
}
531534

com.unity.netcode.gameobjects/Runtime/Components/NetworkTransform.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4003,7 +4003,7 @@ public void Teleport(Vector3 newPosition, Quaternion newRotation, Vector3 newSca
40034003
#region UPDATES AND AUTHORITY CHECKS
40044004
private NetworkTransformTickRegistration m_NetworkTransformTickRegistration;
40054005

4006-
#if DEBUG_LINEARBUFFER && UNITY_EDITOR
4006+
#if DEBUG_LINEARBUFFER
40074007
#if UNITY_EDITOR
40084008
// For debugging purposes
40094009
public struct BufferEntry

0 commit comments

Comments
 (0)