79 lines
2.3 KiB
JavaScript
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 } |