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 }