@hastearcade/snowglobe
Version:
A TypeScript port of CrystalOrb, a high-level Rust game networking library
31 lines • 1.65 kB
TypeScript
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