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
+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) {