@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
2 lines (1 loc) • 1.07 kB
JavaScript
import{now as i}from"../../core/time.js";class s{constructor(i){this._frameIndex=0,this._frameTimings=[],this._timings=[],this._prevTimings=[],this.unitsName="ms",this.decimalPlaces=1,this.enabled=!0,i.on("frameupdate",this.begin.bind(this,"update")),i.on("framerender",this.mark.bind(this,"render")),i.on("frameend",this.mark.bind(this,"other"))}begin(i){if(!this.enabled)return;this._frameIndex<this._frameTimings.length&&this._frameTimings.splice(this._frameIndex);const s=this._prevTimings;this._prevTimings=this._timings,this._timings=this._frameTimings,this._frameTimings=s,this._frameIndex=0,this.mark(i)}mark(s){if(!this.enabled)return;const t=i();if(this._frameIndex>0){const i=this._frameTimings[this._frameIndex-1];i[1]=t-i[1]}else if(this._timings.length>0){const i=this._timings[this._timings.length-1];i[1]=t-i[1]}if(this._frameIndex>=this._frameTimings.length)this._frameTimings.push([s,t]);else{const i=this._frameTimings[this._frameIndex];i[0]=s,i[1]=t}this._frameIndex++}get timings(){return this._timings.slice(0,-1).map((i=>i[1]))}}export{s as CpuTimer};