refactor pointerControls, move away from hero to gameEngine

This commit is contained in:
2026-02-21 20:42:29 +02:00
parent 8954770ff7
commit 151e1ff82f
4 changed files with 22 additions and 26 deletions
+8 -3
View File
@@ -8,6 +8,7 @@ import { StereoEffect } from 'three/addons/effects/StereoEffect.js';
// import { MapControls } from 'three/addons/controls/MapControls.js';
// import { FirstPersonControls } from 'three/addons/controls/FirstPersonControls.js';
import { TransformControls } from 'three/addons/controls/TransformControls.js';
import { PointerControls } from './PointerControls';
import { ARButton } from 'three/addons/webxr/ARButton.js';
import { XRButton } from 'three/addons/webxr/XRButton.js';
import { XRControllerModelFactory } from 'three/addons/webxr/XRControllerModelFactory.js';
@@ -140,6 +141,8 @@ class GameEngine extends EventManager{
this.transformControls.addEventListener('dragging-changed', function (event) {
controls.enabled = !event.value;
});
this.pointerControls = new PointerControls(this.camera, renderer.domElement);
// controls.enableDamping = true;
// controls.screenSpacePanning = true;
@@ -150,9 +153,9 @@ class GameEngine extends EventManager{
function animate(time) {
let delta = clock.getDelta();
gameEngine.physics?.step();
gameEngine.handleXrAction(gameEngine, delta);
gameEngine.hero?.update(delta);
gameEngine.mixers.forEach(m => m.update(delta));
gameEngine.handleXrAction(gameEngine, delta)
gameEngine.dispatchEvent({type: 'beforeRender'})
this.motionQueue.update(delta);
@@ -190,7 +193,7 @@ class GameEngine extends EventManager{
renderer.domElement.addEventListener('wheel', (event) => {
event.preventDefault();
if (gameEngine.hero){
if (!gameEngine.hero.pointerControls.controls.isLocked){
if (!gameEngine.pointerControls.controls.isLocked){
gameEngine.hero.cameraZ += event.deltaY / 100;
}else{
gameEngine.camera.fov += event.deltaY / 100;
@@ -307,7 +310,9 @@ class GameEngine extends EventManager{
await this.physics.init();
}
handleXrActionGameMode(gameEngine, delta) {}
handleXrActionGameMode(gameEngine, delta) {
}
handleXrActionDesignMode(gameEngine, delta) {
if (gameEngine.xrController2?.gamepad) {