Browse Source

improved canvas3d.resetCamera

Alexander Rose 5 years ago
parent
commit
04fd3ade5f
1 changed files with 4 additions and 4 deletions
  1. 4 4
      src/mol-canvas3d/canvas3d.ts

+ 4 - 4
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);