diff --git a/src/components/InteractiveObjects/InteractiveObject.js b/src/components/InteractiveObjects/InteractiveObject.js index c764892..d93204b 100644 --- a/src/components/InteractiveObjects/InteractiveObject.js +++ b/src/components/InteractiveObjects/InteractiveObject.js @@ -72,7 +72,7 @@ class InteractiveObject extends EventManager{ } }) this.io.addEventListener('interaction', ()=>{ - engine.tm?.setGameObject(obj.$go?.id); + engine.tm?.setGameObject(obj.id); }) } break; diff --git a/src/components/InteractiveObjects/MazeQuizGame/MazeQuizGame.js b/src/components/InteractiveObjects/MazeQuizGame/MazeQuizGame.js index 3ab29f4..5940a22 100644 --- a/src/components/InteractiveObjects/MazeQuizGame/MazeQuizGame.js +++ b/src/components/InteractiveObjects/MazeQuizGame/MazeQuizGame.js @@ -65,11 +65,15 @@ class MazeQuizGame extends EventManager { if ( engine.hero.animationsMap?.win){ engine.hero.animationsMap.idle = engine.hero.animationsMap.win } - await Utils.wait(1000); - engine.hero.cameraDelta = Math.PI; - engine.hero.direction += Math.PI; + // await Utils.wait(1000); + // engine.hero.cameraDelta = Math.PI; + // engine.hero.direction += Math.PI; //engine.hero.model.rotation.y += Math.PI; - await Utils.wait(10000); + engine.motionQueue.add({ + o: engine.hero, + a:{cameraDelta: k=>k*Math.PI*6 }, + t: 12 + }); this.dispatchEvent({type:'finish'}) }else{ engine.hero.animationsMap.idle = engine.hero.animationsMap._idle @@ -79,15 +83,19 @@ class MazeQuizGame extends EventManager { if (ud.qid !== undefined && e.started){ engine.dashboard.updateText(ud.question.q) engine.dashboard.levelProgress.update(ud.qid / questions.length) + this.dispatchEvent({type:'interaction'}); } if (ud.corner && e.started){ let q = ud.corner.question; if (!q.pointsAdded){ + let qid = data.questions.indexOf(q); if (!ud.corner.penalty){ q.pointsAdded = true; engine.dashboard.addPoints(data.questionPoints - !!q.applyPenalty * data.questionPenalty) + engine.tm?.post('answer', null, { question: qid, correct: true }); }else{ q.applyPenalty = true; + engine.tm?.post('answer', null, { question: qid, correct: false }); } } } @@ -96,8 +104,7 @@ class MazeQuizGame extends EventManager { }) await this.mazeObject.load(); this.object = this.mazeObject.object; - resolve(this) - this.dispatchEvent({type:'interaction'}); + resolve(this); }) } diff --git a/src/lib/Telemetry.js b/src/lib/Telemetry.js index 905ab7e..d160cfd 100644 --- a/src/lib/Telemetry.js +++ b/src/lib/Telemetry.js @@ -5,16 +5,23 @@ class Telemetry { #af = null; constructor(apiFunction, mode){ - this.events = []; + this.mode = mode; this.#af = apiFunction; } setGame(game){ if (this.game == game) { return; } if (this.game){ - this.#af('game:leave', this.game, {game: this.game, duration: Math.round(performance.now()/1000) - this.gameStart}); + 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, {game}); + this.#af('game:enter', game, { + mode: this.mode, + game + }); } this.game = game; this.gameStart = Math.round(performance.now()/1000); @@ -23,12 +30,17 @@ class Telemetry { 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, {game: this.game, scene}); + this.#af('scene:enter', scene, { + mode: this.mode, + game: this.game, + scene + }); } this.scene = scene; this.sceneStart = Math.round(performance.now()/1000); @@ -37,18 +49,30 @@ class Telemetry { 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, {game: this.game, scene: this.scene, 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, {game: this.game, scene: this.scene, gameObject: this.gameObject, data}); + this.#af('gameobject:' + action, object, { + mode: this.mode, + game: this.game, + scene: this.scene, + gameObject: this.gameObject, + data + }); } } diff --git a/src/mixins/GameEnvironmentMixin.js b/src/mixins/GameEnvironmentMixin.js index 5f02f6a..147957c 100644 --- a/src/mixins/GameEnvironmentMixin.js +++ b/src/mixins/GameEnvironmentMixin.js @@ -26,7 +26,6 @@ export default { } this.resize(); - engine.tm?.setGame(this.object?.id); //engine.setCamera(engine.orthographicCamera) //engine.setCameraOrthographic(); if (!this.scenario) { @@ -125,6 +124,7 @@ export default { * @param target Target scene definition from Game Module */ async loadEnvironment(scene, target){ + engine.tm?.setGame(this.object?.id); //await engine.loadPanorama(`/asset/default/43.webp`); let intro; engine.clearScene();