meta quest

This commit is contained in:
2025-06-06 20:40:27 +03:00
parent 01bf187869
commit 3249564be6
8 changed files with 894 additions and 27 deletions
+3 -3
View File
@@ -149,7 +149,7 @@ export default {
* @param target Target scene definition from Game Module
*/
async loadEnvironment(scene, target){
await gameEngine.loadPanorama(`/asset/default/43.webp`);
//await gameEngine.loadPanorama(`/asset/default/43.webp`);
await this.expandScenarioData(scene);
target.objects = target.objects || {};
let l = target.objects;
@@ -160,7 +160,7 @@ export default {
this.setObjectAttributes(l, this.scene.data, env, 100);
gameEngine.activeObjects.add(env.scene);
}
for (let i of this.scene.data.items) {
for (let i of this.scene.data.items || []) {
let gltf = await gameEngine.load(`/asset/default/${i.data.$go.asset.name}`);
this.setObjectAttributes(l, i.data, gltf, 10);
gameEngine.activeObjects.add(gltf.scene);
@@ -177,7 +177,7 @@ export default {
},
async expandScenarioData(scene){
scene.data.$environment = (await this.$api.gameObject.load(scene.data.environment)).data
for (let i of scene.data.items) {
for (let i of scene.data.items || []) {
i.data.$go = (await this.$api.gameObject.load(i.data.go)).data;
}
},
+2 -2
View File
@@ -154,7 +154,7 @@ export default {
this.setObjectAttributes(l, this.scene.data, env, 100);
gameEngine.activeObjects.add(env.scene);
}
for (let i of this.scene.data.items) {
for (let i of this.scene.data.items || []) {
let gltf = await gameEngine.load(`/asset/default/${i.data.$go.asset.name}`);
this.setObjectAttributes(l, i.data, gltf, 10);
gameEngine.activeObjects.add(gltf.scene);
@@ -170,7 +170,7 @@ export default {
},
async expandScenarioData(scene){
scene.data.$environment = (await this.$api.gameObject.load(scene.data.environment)).data
for (let i of scene.data.items) {
for (let i of scene.data.items || []) {
i.data.$go = (await this.$api.gameObject.load(i.data.go)).data;
}
},
+41 -16
View File
@@ -109,6 +109,25 @@ class GameEngine {
function animate(time) {
let delta = clock.getDelta();
mixer.update(delta);
if (gameEngine.xrController1?.gamepad){
let gp = gameEngine.xrController1.gamepad;
if (gp.axes[3] != 0){
gameEngine.scene.position.z += gp.axes[3] * delta;
}
if (gp.axes[2] != 0){
gameEngine.scene.position.x += gp.axes[2] * delta;
}
}
if (gameEngine.xrController2?.gamepad){
let gp = gameEngine.xrController2.gamepad;
if (gp.axes[3] != 0){
let sc = gameEngine.scene.scale.x + gp.axes[3] * delta;
gameEngine.scene.scale.set(sc, sc, sc);
}
if (gp.axes[2] != 0){
gameEngine.scene.rotation.y += gp.axes[2] * delta;
}
}
gameEngine.render(scene, gameEngine.camera);
gameEngine.gizmo?.render();
}
@@ -160,21 +179,27 @@ class GameEngine {
}
initXrControllers(){
let controller1 = this.renderer.xr.getController( 0 );
controller1.addEventListener( 'select', this.onSelect.bind(this) );
controller1.addEventListener( 'selectstart', this.onControllerEvent.bind(this) );
controller1.addEventListener( 'selectend', this.onControllerEvent.bind(this) );
controller1.addEventListener( 'move', this.onControllerEvent.bind(this) );
controller1.userData.active = false;
this.scene.add( controller1 );
let c1 = this.renderer.xr.getController( 0 );
c1.addEventListener( 'select', this.onSelect.bind(this) );
c1.addEventListener( 'selectstart', this.onControllerEvent.bind(this) );
c1.addEventListener( 'selectend', this.onControllerEvent.bind(this) );
c1.addEventListener( 'move', this.onControllerEvent.bind(this) );
c1.userData.active = false;
c1.addEventListener('connected', e=>{
c1.gamepad = e.data.gamepad;
})
this.scene.add( c1 );
let controller2 = this.renderer.xr.getController( 1 );
controller2.addEventListener( 'select', this.onSelect.bind(this) );
controller2.addEventListener( 'selectstart', this.onControllerEvent.bind(this) );
controller2.addEventListener( 'selectend', this.onControllerEvent.bind(this) );
controller2.addEventListener( 'move', this.onControllerEvent.bind(this) );
controller2.userData.active = true;
this.scene.add( controller2 );
let c2 = this.renderer.xr.getController( 1 );
c2.addEventListener( 'select', this.onSelect.bind(this) );
c2.addEventListener( 'selectstart', this.onControllerEvent.bind(this) );
c2.addEventListener( 'selectend', this.onControllerEvent.bind(this) );
c2.addEventListener( 'move', this.onControllerEvent.bind(this) );
c2.userData.active = true;
c2.addEventListener('connected', e=>{
c2.gamepad = e.data.gamepad;
})
this.scene.add( c2 );
const controllerModelFactory = new XRControllerModelFactory();
@@ -192,8 +217,8 @@ class GameEngine {
line.name = 'line';
line.scale.z = 5;
this.xrController1 = controller1
this.xrController2 = controller2
this.xrController1 = c1
this.xrController2 = c2
}
onControllerEvent(event) {