From 40aa847d1f9c5d2a1a5161ecedb879c2657f9416 Mon Sep 17 00:00:00 2001
From: David Sehnal <david.sehnal@gmail.com>
Date: Tue, 20 Nov 2018 14:09:01 +0100
Subject: [PATCH] mol-canvas3d: do not set camera clipping when in transition

---
 src/mol-canvas3d/camera.ts            | 7 +++++++
 src/mol-canvas3d/camera/transition.ts | 2 +-
 src/mol-canvas3d/canvas3d.ts          | 3 ++-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/mol-canvas3d/camera.ts b/src/mol-canvas3d/camera.ts
index 783c8883d..9c48d0211 100644
--- a/src/mol-canvas3d/camera.ts
+++ b/src/mol-canvas3d/camera.ts
@@ -131,6 +131,13 @@ class Camera implements Object3D {
 namespace Camera {
     export type Mode = 'perspective' | 'orthographic'
 
+    export interface ClippingInfo {
+        near: number,
+        far: number,
+        fogNear: number,
+        fogFar: number
+    }
+
     export function createDefaultSnapshot(): Snapshot {
         return {
             mode: 'perspective',
diff --git a/src/mol-canvas3d/camera/transition.ts b/src/mol-canvas3d/camera/transition.ts
index 0ed592c1a..469446c54 100644
--- a/src/mol-canvas3d/camera/transition.ts
+++ b/src/mol-canvas3d/camera/transition.ts
@@ -15,7 +15,7 @@ class CameraTransitionManager {
 
     private func: CameraTransitionManager.TransitionFunc = CameraTransitionManager.defaultTransition;
     private start = 0;
-    private inTransition = false;
+    inTransition = false;
     private durationMs = 0;
     private source: Camera.Snapshot = Camera.createDefaultSnapshot();
     private target: Camera.Snapshot = Camera.createDefaultSnapshot();
diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts
index 2914b1ab8..c2cf9bee3 100644
--- a/src/mol-canvas3d/canvas3d.ts
+++ b/src/mol-canvas3d/canvas3d.ts
@@ -189,7 +189,8 @@ namespace Canvas3D {
 
             let didRender = false
             controls.update()
-            setClipping()
+            // TODO: is this a good fix? Also, setClipping does not work if the user has manually set a clipping plane.
+            if (!camera.transition.inTransition) setClipping();
             const cameraChanged = camera.updateMatrices();
 
             if (force || cameraChanged) {
-- 
GitLab