UNPKG

@hastearcade/snowglobe

Version:

A TypeScript port of CrystalOrb, a high-level Rust game networking library

31 lines 1.65 kB
import { type Config } from './lib'; import * as Timestamp from './timestamp'; export interface Stepper { step: () => void; } export interface FixedTimestepper extends Stepper { lastCompletedTimestamp: () => Timestamp.Timestamp; resetLastCompletedTimestamp: (correctedTimestamp: Timestamp.Timestamp) => void; postUpdate: (timestepOvershootSeconds: number) => void; } export declare enum TerminationCondition { LastUndershoot = 0, FirstOvershoot = 1 } export declare function decomposeFloatTimestamp(condition: TerminationCondition, floatTimestamp: Timestamp.FloatTimestamp, timestepSeconds: number): [Timestamp.Timestamp, number]; export declare function shouldTerminate(condition: TerminationCondition, currentOvershootSeconds: number, nextOvershootSeconds: number): boolean; export declare class TimeKeeper<$Stepper extends FixedTimestepper> { stepper: $Stepper; terminationCondition: TerminationCondition; timestepOvershootSeconds: number; config: Config; constructor(stepper: $Stepper, config: Config, terminationCondition?: TerminationCondition); update(deltaSeconds: number, serverSecondsSinceStartup: number): void; currentLogicalTimestamp(): Timestamp.FloatTimestamp; targetLogicalTimestamp(serverSecondsSinceStartup: number): Timestamp.FloatTimestamp; timestampDriftSeconds(serverSecondsSinceStartup: number): number; deltaSecondsCompensateForDrift(deltaSeconds: number, serverSecondsSinceStartup: number): number; advanceStepper(deltaSeconds: number): number; timeskipIfNeeded(serverSecondsSinceStartup: number): void; } //# sourceMappingURL=fixed_timestepper.d.ts.map