@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
22 lines • 1.87 kB
JavaScript
export class TgdTimeInterval {
constructor(options) {
this.intervalInSeconds = 0;
this.action = undefined;
this.previousTime = 0;
this.intervalInSeconds = options.intervalInSeconds;
this.action = options.action;
}
/**
* If more than `intervalInSeconds` have passed since
* then last call of `update()`, then we call `action()`.
*/
update(time, delta) {
const deltaFromPrevious = time - this.previousTime;
if (deltaFromPrevious < this.intervalInSeconds)
return;
this.intervalInSeconds = Math.max(this.intervalInSeconds, 1 / 60);
this.previousTime += Math.floor(deltaFromPrevious / this.intervalInSeconds) * this.intervalInSeconds;
this.action?.(time, delta);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGltZS9pbnRlcnZhbC9pbnRlcnZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sZUFBZTtJQU14QixZQUFZLE9BQStCO1FBTHBDLHNCQUFpQixHQUFHLENBQUMsQ0FBQTtRQUNyQixXQUFNLEdBQTJDLFNBQVMsQ0FBQTtRQUV6RCxpQkFBWSxHQUFHLENBQUMsQ0FBQTtRQUdwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFBO1FBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQTtJQUNoQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQzlCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUE7UUFDbEQsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCO1lBQUUsT0FBTTtRQUV0RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUE7UUFDcEcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUM5QixDQUFDO0NBQ0oifQ==