This commit is contained in:
2026-02-08 08:01:24 +02:00
parent 8594fd0c6f
commit e6a23b542b
4 changed files with 45 additions and 14 deletions
@@ -72,7 +72,7 @@ class InteractiveObject extends EventManager{
}
})
this.io.addEventListener('interaction', ()=>{
engine.tm?.setGameObject(obj.$go?.id);
engine.tm?.setGameObject(obj.id);
})
}
break;
@@ -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);
})
}
+30 -6
View File
@@ -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
});
}
}
+1 -1
View File
@@ -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();