27 lines
897 B
C#
27 lines
897 B
C#
|
// a simple snapshot with timestamp & interpolation
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace Mirror.Examples.LagCompensationDemo
|
||
|
{
|
||
|
public struct Snapshot3D : Snapshot
|
||
|
{
|
||
|
public double remoteTime { get; set; }
|
||
|
public double localTime { get; set; }
|
||
|
public Vector3 position;
|
||
|
|
||
|
public Snapshot3D(double remoteTime, double localTime, Vector3 position)
|
||
|
{
|
||
|
this.remoteTime = remoteTime;
|
||
|
this.localTime = localTime;
|
||
|
this.position = position;
|
||
|
}
|
||
|
|
||
|
public static Snapshot3D Interpolate(Snapshot3D from, Snapshot3D to, double t) =>
|
||
|
new Snapshot3D(
|
||
|
// interpolated snapshot is applied directly. don't need timestamps.
|
||
|
0, 0,
|
||
|
// lerp unclamped in case we ever need to extrapolate.
|
||
|
Vector3.LerpUnclamped(from.position, to.position, (float)t));
|
||
|
}
|
||
|
}
|