From 04fd3ade5f96d3d74d6ca9d399d3c2d7e7794917 Mon Sep 17 00:00:00 2001
From: Alexander Rose <alex.rose@rcsb.org>
Date: Fri, 19 Jul 2019 14:52:20 -0700
Subject: [PATCH] improved canvas3d.resetCamera

---
 src/mol-canvas3d/canvas3d.ts | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts
index 7b8995710..19f3febda 100644
--- a/src/mol-canvas3d/canvas3d.ts
+++ b/src/mol-canvas3d/canvas3d.ts
@@ -140,7 +140,7 @@ namespace Canvas3D {
         const multiSample = new MultiSamplePass(webgl, camera, drawPass, postprocessing, p.multiSample)
 
         let drawPending = false
-        let cameraResetRequested = false
+        let cameraResetRequested: boolean | Vec3 = false
 
         function getLoci(pickingId: PickingId) {
             let loci: Loci = EmptyLoci
@@ -270,7 +270,8 @@ namespace Canvas3D {
 
             runTask(scene.commit()).then(() => {
                 if (cameraResetRequested && !scene.isCommiting) {
-                    camera.focus(scene.boundingSphere.center, scene.boundingSphere.radius)
+                    const dir = typeof cameraResetRequested === 'boolean' ? undefined : cameraResetRequested
+                    camera.focus(scene.boundingSphere.center, scene.boundingSphere.radius, dir)
                     cameraResetRequested = false
                 }
                 if (debugHelper.isEnabled) debugHelper.update()
@@ -343,8 +344,7 @@ namespace Canvas3D {
             handleResize,
             resetCamera: (dir?: Vec3) => {
                 if (scene.isCommiting) {
-                    // TODO handle `dir`
-                    cameraResetRequested = true
+                    cameraResetRequested = dir || true
                 } else {
                     camera.focus(scene.boundingSphere.center, scene.boundingSphere.radius, dir)
                     requestDraw(true);
-- 
GitLab