From cee426ed95c7455b65bdea237fe805b070a05598 Mon Sep 17 00:00:00 2001 From: Robin Hawkes Date: Fri, 2 Dec 2016 17:03:00 +0000 Subject: [PATCH] Force update after manual control change --- src/World.js | 6 +++--- src/controls/Controls.Orbit.js | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/World.js b/src/World.js index 2a89265..41a1dfe 100644 --- a/src/World.js +++ b/src/World.js @@ -132,9 +132,9 @@ class World extends EventEmitter { window.requestAnimationFrame(this._update.bind(this)); // Update controls - this._controls.forEach(controls => { - controls.update(delta); - }); + // this._controls.forEach(controls => { + // controls.update(delta); + // }); this.emit('preUpdate', delta); this._engine.update(delta); diff --git a/src/controls/Controls.Orbit.js b/src/controls/Controls.Orbit.js index 90d21b4..996e6b1 100644 --- a/src/controls/Controls.Orbit.js +++ b/src/controls/Controls.Orbit.js @@ -39,10 +39,16 @@ class Orbit extends EventEmitter { controls.panLeft(-deltaX, controls.object.matrix); controls.panUp(-deltaY, controls.object.matrix); + + this.update(); + this._world.emit('controlsMoveEnd', this._controls.target); } panBy(pointDelta, animate) { this._controls.pan(-pointDelta.x, pointDelta.y); + + this.update(); + this._world.emit('controlsMoveEnd', this._controls.target); } // Zooming the camera in and out @@ -55,6 +61,9 @@ class Orbit extends EventEmitter { } else { controls.dollyOut(metresDelta); } + + this.update(); + this._world.emit('controlsMoveEnd', this._controls.target); } // Force camera to look at something other than the target @@ -71,11 +80,17 @@ class Orbit extends EventEmitter { var theta = controls.getPolarAngle(); var delta = angle - theta; controls.rotateUp(-delta); + + this.update(); + this._world.emit('controlsMoveEnd', this._controls.target); } tiltBy(angleDelta, animate) { var controls = this._controls; controls.rotateUp(-angleDelta); + + this.update(); + this._world.emit('controlsMoveEnd', this._controls.target); } // Rotate (left and right) @@ -85,12 +100,18 @@ class Orbit extends EventEmitter { var theta = controls.getAzimuthalAngle(); var delta = angle - theta; controls.rotateLeft(-delta); + + this.update(); + this._world.emit('controlsMoveEnd', this._controls.target); } // Right is positive, left negative rotateBy(angleDelta, animate) { var controls = this._controls; controls.rotateLeft(-angleDelta); + + this.update(); + this._world.emit('controlsMoveEnd', this._controls.target); } // Fly to the given point, animating pan and tilt/rotation to final position