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();
- }
- }