Skip to content

Commit f136489

Browse files
committed
Fix interpolation stuttering
1 parent 3c58c71 commit f136489

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

Core/Game/Managers/FrameManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public static void TweakFramerate()
3838
{
3939
float scaler = (float)(ForeSight);
4040
scaler -= 0;
41-
scaler /= 16;
41+
scaler /= 32;
4242
Time.timeScale = 1 + scaler;
4343
} else
4444
{

Core/Simulation/Physics/Core/LSBody.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -600,9 +600,11 @@ public void SetVisuals()
600600
private void DoSetVisualPosition(Vector3 pos)
601601
{
602602
if (this.CanSetVisualPosition) {
603+
603604
lastVisualPos = PositionalTransform.position;
604605
_visualPosition = pos;
605606
SetPositionBuffer = true;
607+
606608
}
607609
}
608610

@@ -621,18 +623,20 @@ private void DoSetVisualRotation(Vector2d rot)
621623

622624
public void Visualize()
623625
{
626+
float lerpTime = PhysicsManager.LerpTime;
624627
if (CanSetVisualPosition) {
625628
if (SetPositionBuffer) {
626-
PositionalTransform.position = Vector3.LerpUnclamped (lastVisualPos, _visualPosition, PhysicsManager.LerpTime);
627-
629+
630+
PositionalTransform.position = Vector3.Lerp (lastVisualPos, _visualPosition, lerpTime);
631+
SetPositionBuffer = lerpTime < 1f;
628632
}
629633
}
630634
//const float rotationLerpDamping = 1f;
631635
if (CanSetVisualRotation && RotationalTransform != null) {
632636
if (SetRotationBuffer) {
633637
RotationalTransform.rotation =
634-
Quaternion.LerpUnclamped(lastVisualRot, visualRot, PhysicsManager.LerpTime);
635-
SetRotationBuffer = PhysicsManager.LerpTime < 1f;
638+
Quaternion.Lerp(lastVisualRot, visualRot, PhysicsManager.LerpTime);
639+
SetRotationBuffer = lerpTime < 1f;
636640

637641
}
638642
}

Core/Simulation/Physics/Core/PhysicsManager.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,13 @@ public static void Deactivate()
223223
public static bool Simulated { get; private set;}
224224
public static double AccumulatedTime { get; private set; }
225225
public static float LerpTime { get; private set;}
226+
public static bool LastLerpOver { get; private set;}
226227
public static void LateVisualize()
227228
{
228229
if (Simulated)
230+
{
229231
AccumulatedTime = Time.deltaTime;
232+
}
230233
else
231234
AccumulatedTime += Time.deltaTime;
232235
LerpTime = (float)(AccumulatedTime / PhysicsManager.FixedDeltaTime);
@@ -240,6 +243,8 @@ public static void LateVisualize()
240243
}
241244
}
242245

246+
if (Simulated)
247+
Simulated = false;
243248
}
244249

245250
public static float ElapsedTime;

Integration/Test/TestHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ void HandleOnTestData (byte[] obj)
4747

4848
protected override void OnSimulate ()
4949
{
50-
if (!_enabled)
50+
if (_enabled)
5151
return;
5252
ticker++;
5353
if (ticker >= _checkFrameInterval) {

0 commit comments

Comments
 (0)