From 1cb9f3d54d64966e3c055a97846524900f9575b8 Mon Sep 17 00:00:00 2001 From: Garrett Johnson Date: Sat, 23 Mar 2024 12:34:43 +0900 Subject: [PATCH] Globe Fixes (#515) * Don't fail if tiles are not set, yet * Remove required constructor arguments * Remove argument requirement * Fix dom reference * Exit update early if camera is not present --- src/three/controls/EnvironmentControls.js | 12 +++++++----- src/three/controls/GlobeControls.js | 6 ++++++ src/three/controls/PointerTracker.js | 4 ++-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/three/controls/EnvironmentControls.js b/src/three/controls/EnvironmentControls.js index 1f00e3ea8..38f981d65 100644 --- a/src/three/controls/EnvironmentControls.js +++ b/src/three/controls/EnvironmentControls.js @@ -83,7 +83,7 @@ export class EnvironmentControls extends EventDispatcher { this.adjustHeight = true; // internal state - this.pointerTracker = new PointerTracker( domElement ); + this.pointerTracker = new PointerTracker(); this.needsUpdate = false; this.actionHeightOffset = 0; @@ -112,9 +112,9 @@ export class EnvironmentControls extends EventDispatcher { this._upInitialized = false; // init - this.attach( domElement ); - this.setCamera( camera ); - this.setScene( scene ); + if ( domElement ) this.attach( domElement ); + if ( camera ) this.setCamera( camera ); + if ( scene ) this.setScene( scene ); } @@ -444,6 +444,8 @@ export class EnvironmentControls extends EventDispatcher { detach() { + this.domElement = null; + if ( this._detachCallback ) { this._detachCallback(); @@ -493,7 +495,7 @@ export class EnvironmentControls extends EventDispatcher { update() { - if ( ! this.enabled ) { + if ( ! this.enabled || ! this.camera ) { return; diff --git a/src/three/controls/GlobeControls.js b/src/three/controls/GlobeControls.js index 11d78b40d..4bfb9a6d6 100644 --- a/src/three/controls/GlobeControls.js +++ b/src/three/controls/GlobeControls.js @@ -112,6 +112,12 @@ export class GlobeControls extends EnvironmentControls { update() { + if ( ! this.tilesGroup || ! this.camera ) { + + return; + + } + super.update(); const { diff --git a/src/three/controls/PointerTracker.js b/src/three/controls/PointerTracker.js index 58825d811..ef6426059 100644 --- a/src/three/controls/PointerTracker.js +++ b/src/three/controls/PointerTracker.js @@ -2,9 +2,9 @@ import { Vector2 } from 'three'; export class PointerTracker { - constructor( domElement ) { + constructor() { - this.domElement = domElement; + this.domElement = null; this.buttons = 0; this.pointerType = null; this.pointerOrder = [];