Advertisement
Guest User

Untitled

a guest
Apr 12th, 2018
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import {tick} from './some-other-file';
  2.  
  3. export class Scheduler {
  4.     private targetRate: number = 500;
  5.     private lastTick: number;
  6.     private timeoutHandler: number;
  7.     private running: boolean = false;
  8.  
  9.     start(): void {
  10.         if (this.running) {
  11.             return;
  12.         }
  13.         this.lastTick = Date.now(); //note - switch to performance.now if necessary
  14.         this.running = true;
  15.  
  16.         let repeater = () => {
  17.             if (!this.running) {
  18.                 return;
  19.             }
  20.             let timeDelta = Date.now() - this.lastTick;
  21.             tick(timeDelta);
  22.             this.lastTick = Date.now();
  23.             this.timeoutHandler = setTimeout(repeater.bind(this), this.targetRate);
  24.         };
  25.         this.timeoutHandler = setTimeout(repeater.bind(this), this.targetRate);
  26.  
  27.     };
  28.     stop(): void {
  29.         this.running = false;
  30.     };
  31.  
  32.     /**
  33.      * Changes the tick rate after the next tick
  34.      * @param rate New rate in milliseconds per tick
  35.      */
  36.     setTargetRate(rate: number): void {
  37.         this.targetRate = rate;
  38.     };
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement