cables_dev/cables/src/core/cg/sg_fpscounter.js
import { Events } from "cables-shared-client";
export default class FpsCounter extends Events
{
constructor()
{
super();
this._timeStartFrame = 0;
this._timeStartSecond = 0;
this._fpsCounter = 0;
this._msCounter = 0;
this._frameCount = 0;
this.stats = { "ms": 0, "fps": 0 };
}
get frameCount()
{
return this._frameCount;
}
startFrame()
{
this._timeStartFrame = CABLES.now();
}
endFrame()
{
this._frameCount++;
this._fpsCounter++;
const timeFrame = CABLES.now() - this._timeStartFrame;
this._msCounter += timeFrame;
if (CABLES.now() - this._timeStartSecond > 1000)
{
this.endSecond();
}
}
endSecond()
{
this.stats.fps = this._fpsCounter;
this.stats.ms = Math.round(this._msCounter / this._fpsCounter * 100) / 100;
this.emitEvent("performance", this.stats);
// reset
this._fpsCounter = 0;
this._msCounter = 0;
this._timeStartSecond = CABLES.now();
}
}