Browse Source

canvas3d: do not autoreset camera if the "breaking" sphere mutually overlaps with current camera sphere

David Sehnal 4 years ago
parent
commit
2987240df4
1 changed files with 2 additions and 1 deletions
  1. 2 1
      src/mol-canvas3d/canvas3d.ts

+ 2 - 1
src/mol-canvas3d/canvas3d.ts

@@ -420,7 +420,8 @@ namespace Canvas3D {
                 const b = r.values.boundingSphere.ref.value;
                 if (!b.radius) continue;
 
-                if (!Sphere3D.includes(oldBoundingSphereVisible, b)) return true;
+                const cameraDist = Vec3.distance(cameraSphere.center, b.center);
+                if (cameraDist > cameraSphere.radius && cameraDist > b.radius && !Sphere3D.includes(oldBoundingSphereVisible, b)) return true;
                 if (Sphere3D.overlaps(cameraSphere, b)) cameraSphereOverlapsNone = false;
             }