Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import {tick} from './some-other-file';
- export class Scheduler {
- private targetRate: number = 500;
- private lastTick: number;
- private timeoutHandler: number;
- private running: boolean = false;
- start(): void {
- if (this.running) {
- return;
- }
- this.lastTick = Date.now(); //note - switch to performance.now if necessary
- this.running = true;
- let repeater = () => {
- if (!this.running) {
- return;
- }
- let timeDelta = Date.now() - this.lastTick;
- tick(timeDelta);
- this.lastTick = Date.now();
- this.timeoutHandler = setTimeout(repeater.bind(this), this.targetRate);
- };
- this.timeoutHandler = setTimeout(repeater.bind(this), this.targetRate);
- };
- stop(): void {
- this.running = false;
- };
- /**
- * Changes the tick rate after the next tick
- * @param rate New rate in milliseconds per tick
- */
- setTargetRate(rate: number): void {
- this.targetRate = rate;
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement