Skip to content

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 ​

ts
new Interpolator<Field>(durationMs, fields): Interpolator<Field>;

Defined in: client/interpolate.ts:24

Parameters ​

ParameterTypeDescription
durationMsnumberhow long a glide takes, usually the time between ticks
fieldsreadonly Field[]the numeric fields to smooth, e.g. ["x", "y"]

Returns ​

Interpolator<Field>

Methods ​

update() ​

ts
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 ​

ParameterType
targetsRecord<string, Record<Field, number>>
now?number

Returns ​

void


at() ​

ts
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 ​

ParameterType
idstring
now?number

Returns ​

Record<Field, number> | undefined


clear() ​

ts
clear(): void;

Defined in: client/interpolate.ts:57

Forget everything, e.g. after moving to another room.

Returns ​

void

MIT licence. Tickflare is an independent project and is not affiliated with Cloudflare.