I spent most of today attempting to find a nice short description of how to implement interpolated positions for a networked object, without much success. It seems only mentioned here and there, but I couldn’t find any descriptions which didn’t make my head hurt. I finally managed to make an implementation which I believe could be cleaned up a lot, but here’s the jist of it:

```
curAngle = Mathf.SmoothDampAngle(curAngle, newNetAngle, ref tempvelF, prevRotDiff);
myTransform.rotation = Quaternion.Euler(0, curAngle, 0);
if (newNetAngle != oldNetAngle)
{
prevRotDiff = Time.time - prevRotStamp;
prevRotStamp = Time.time;
oldNetAngle = newNetAngle;
}
myTransform.position = Vector3.SmoothDamp(myTransform.position, newNetPos, ref tempvelV, prevPosDiff);
if (newNetPos != oldNetPos)
{
prevPosDiff = Time.time - prevPosStamp;
prevPosStamp = Time.time;
oldNetPos = newNetPos;
}
```

It moves the object (in this case a player) just the right amount until it recieves a new update. What I’m wondering is what SmoothDamp and SmoothDampAngle actually does mathwise here? I tried doing the math myself but failed.