#12 initial commit
This commit is contained in:
@@ -2,7 +2,7 @@ import { getBoundingBox, getBoundingBoxCenterPoint, getBoundingBoxMaxLength, cen
|
||||
import { EventManager } from '@/lib/EventManager';
|
||||
|
||||
class GenericObject extends EventManager{
|
||||
emits = ['finish']
|
||||
emits = ['finish', 'interaction']
|
||||
constructor(engine, data){
|
||||
super();
|
||||
return new Promise(async(resolve, reject)=>{
|
||||
@@ -41,6 +41,7 @@ class GenericObject extends EventManager{
|
||||
})
|
||||
}
|
||||
}
|
||||
this.dispatchEvent({type:'interaction'})
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -65,11 +65,15 @@ class InteractiveObject extends EventManager{
|
||||
// })
|
||||
this.io.forwardEvents?.(this);
|
||||
if (this.emits?.includes('interaction')){
|
||||
//process first interaction
|
||||
this.io.once('interaction', ()=>{
|
||||
if (obj.introText){
|
||||
engine.dashboard.updateText(obj.introText, true)
|
||||
}
|
||||
})
|
||||
this.io.addEventListener('interaction', ()=>{
|
||||
engine.tm?.setGameObject(obj.$go?.id);
|
||||
})
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ const defaults = {
|
||||
const tl = 4;
|
||||
|
||||
class MazeQuizGame extends EventManager {
|
||||
emits = ['finish', 'sceneSwitch']
|
||||
emits = ['finish', 'sceneSwitch', 'interaction']
|
||||
constructor(engine, data) {
|
||||
super();
|
||||
this.data = data;
|
||||
@@ -97,6 +97,7 @@ class MazeQuizGame extends EventManager {
|
||||
await this.mazeObject.load();
|
||||
this.object = this.mazeObject.object;
|
||||
resolve(this)
|
||||
this.dispatchEvent({type:'interaction'});
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import { TextObject } from './TextObject';
|
||||
import Utils from '#/app/Utils';
|
||||
|
||||
class SingleQuestion extends EventManager {
|
||||
emits = ['finish']
|
||||
emits = ['finish', 'interaction']
|
||||
constructor(engine, data) {
|
||||
super();
|
||||
return new Promise(async (resolve, reject)=>{
|
||||
@@ -20,8 +20,10 @@ class SingleQuestion extends EventManager {
|
||||
qa.object.position.y = -0.15 * (i + 1);
|
||||
answers.add(qa.object);
|
||||
qa.object._answer = a;
|
||||
engine.clickable.add(qa.object, (i) => {
|
||||
engine.clickable.add(qa.object, () => {
|
||||
//if (!container.visible) return;
|
||||
this.dispatchEvent({type:'interaction'});
|
||||
engine.tm?.post('answer', i, {answer: a, correct: a == ca});
|
||||
if (qa.object._answer == ca) {
|
||||
this.dispatchEvent({type:'finish'})
|
||||
qa.object.outlineColor = new Color(0x55ff55);
|
||||
|
||||
@@ -5,10 +5,10 @@ import {
|
||||
|
||||
import { EventManager } from '@/lib/EventManager';
|
||||
class VideoPlayer extends EventManager {
|
||||
emits = ['finish']
|
||||
emits = ['finish', 'interaction']
|
||||
constructor(engine, data){
|
||||
super();
|
||||
let vi, plane;
|
||||
let vi, plane, finished = false;
|
||||
return new Promise((resolve, reject)=>{
|
||||
vi = document.createElement('video');
|
||||
vi.src = engine.assetPath + data.$go.asset.name;
|
||||
@@ -31,7 +31,9 @@ class VideoPlayer extends EventManager {
|
||||
vi.play();
|
||||
}else{
|
||||
vi.pause();
|
||||
engine.tm?.post('paused', null, {time: vi.currentTime});
|
||||
}
|
||||
this.dispatchEvent({type:'interaction'})
|
||||
});
|
||||
|
||||
const onPlay = ()=>{
|
||||
@@ -61,6 +63,7 @@ class VideoPlayer extends EventManager {
|
||||
vi.addEventListener('pause', onPause);
|
||||
|
||||
vi.addEventListener('ended', ()=>{
|
||||
finished = true;
|
||||
this.dispatchEvent({type:'finish'})
|
||||
})
|
||||
this.video = vi;
|
||||
|
||||
Reference in New Issue
Block a user