Files
pronature-platform/src/lib/Telemetry.js
T
2026-02-08 08:01:24 +02:00

79 lines
2.3 KiB
JavaScript

class Telemetry {
game = null;
scene = null;
gameObject = null;
#af = null;
constructor(apiFunction, mode){
this.mode = mode;
this.#af = apiFunction;
}
setGame(game){
if (this.game == game) { return; }
if (this.game){
this.#af('game:leave', this.game, {
mode: this.mode,
game: this.game,
duration: Math.round(performance.now()/1000) - this.gameStart
});
}
if (game){
this.#af('game:enter', game, {
mode: this.mode,
game
});
}
this.game = game;
this.gameStart = Math.round(performance.now()/1000);
}
setScene(scene){
if (this.scene == scene) { return; }
if (this.scene){
this.#af('scene:leave', this.scene, {
mode: this.mode,
duration: Math.round(performance.now()/1000) - this.sceneStart,
game: this.game, scene: this.scene
});
}
if (scene){
this.#af('scene:enter', scene, {
mode: this.mode,
game: this.game,
scene
});
}
this.scene = scene;
this.sceneStart = Math.round(performance.now()/1000);
}
setGameObject(gameObject){
if (this.gameObject == gameObject) { return; }
if (this.gameObject){
this.#af('gameobject:leave', this.gameObject, {
mode: this.mode,
duration: Math.round(performance.now()/1000) - this.gameObjectStart,
game: this.game, scene: this.scene, gameObject: this.gameObject
});
}
if (gameObject){
this.#af('gameobject:enter', gameObject, {
mode: this.mode,
game: this.game,
scene: this.scene,
gameObject
});
}
this.gameObject = gameObject;
this.gameObjectStart = Math.round(performance.now()/1000);
}
post(action, object, data){
this.#af('gameobject:' + action, object, {
mode: this.mode,
game: this.game,
scene: this.scene,
gameObject: this.gameObject,
data
});
}
}
export { Telemetry }