Class: Interpolator<Field>
Defined in: client/interpolate.ts:15
Smooths values that arrive once per tick, for drawing between ticks.
State sync delivers positions 10 to 30 times a second; a screen draws 60 or more. Each time a new value arrives for an id, the interpolator glides to it from wherever that id was being drawn, over durationMs (one tick is the usual choice). Because it always starts from what is on screen, a late or bunched update bends the motion instead of making it jump.
const glide = new Interpolator(1000 / client.tickRate, ["x", "y"]);
onState: (state) => glide.update(state.units),
// in the render loop:
const { x, y } = glide.at(id) ?? state.units[id];
Type Parameters
| Type Parameter |
|---|
Field extends string |
Constructors
Constructor
new Interpolator<Field>(durationMs, fields): Interpolator<Field>;Defined in: client/interpolate.ts:24
Parameters
| Parameter | Type | Description |
|---|---|---|
durationMs | number | how long a glide takes, usually the time between ticks |
fields | readonly Field[] | the numeric fields to smooth, e.g. ["x", "y"] |
Returns
Interpolator<Field>
Methods
update()
update(targets, now?): void;Defined in: client/interpolate.ts:33
Feed the latest values, keyed by id. Ids missing from targets are forgotten; new ones start at their target.
Parameters
| Parameter | Type |
|---|---|
targets | Record<string, Record<Field, number>> |
now? | number |
Returns
void
at()
at(id, now?): Record<Field, number> | undefined;Defined in: client/interpolate.ts:45
The values to draw for id right now, or undefined if it is not known.
Parameters
| Parameter | Type |
|---|---|
id | string |
now? | number |
Returns
Record<Field, number> | undefined
clear()
clear(): void;Defined in: client/interpolate.ts:57
Forget everything, e.g. after moving to another room.
Returns
void