From f90751aaece31bdaa15b9b0b0edbc8d5daafe848 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alexander.rose@weirdbyte.de> Date: Tue, 4 Dec 2018 15:23:48 +0900 Subject: [PATCH] fix repr boundingsphere update --- src/mol-canvas3d/canvas3d.ts | 1 - src/mol-gl/scene.ts | 4 ++-- src/mol-repr/structure/units-visual.ts | 5 ++++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts index 8e2016f12..e815b7f3f 100644 --- a/src/mol-canvas3d/canvas3d.ts +++ b/src/mol-canvas3d/canvas3d.ts @@ -295,7 +295,6 @@ namespace Canvas3D { if (oldRO) { SetUtils.difference(newRO, oldRO).forEach(o => scene.add(o)) SetUtils.difference(oldRO, newRO).forEach(o => scene.remove(o)) - scene.update() } else { repr.renderObjects.forEach(o => scene.add(o)) } diff --git a/src/mol-gl/scene.ts b/src/mol-gl/scene.ts index 575bc56cb..f64bc162f 100644 --- a/src/mol-gl/scene.ts +++ b/src/mol-gl/scene.ts @@ -38,12 +38,12 @@ function calculateBoundingSphere(renderableMap: Map<RenderObject, Renderable<Ren boundaryHelper.reset(0.1); renderableMap.forEach(r => { - if (!r.state.visible || !r.boundingSphere.radius) return; + if (!r.boundingSphere.radius) return; boundaryHelper.boundaryStep(r.boundingSphere.center, r.boundingSphere.radius); }); boundaryHelper.finishBoundaryStep(); renderableMap.forEach(r => { - if (!r.state.visible || !r.boundingSphere.radius) return; + if (!r.boundingSphere.radius) return; boundaryHelper.extendStep(r.boundingSphere.center, r.boundingSphere.radius); }); diff --git a/src/mol-repr/structure/units-visual.ts b/src/mol-repr/structure/units-visual.ts index 87e06e3fc..d915e9521 100644 --- a/src/mol-repr/structure/units-visual.ts +++ b/src/mol-repr/structure/units-visual.ts @@ -161,12 +161,15 @@ export function UnitsVisual<P extends UnitsParams>(builder: UnitsVisualGeometryB // console.log('update geometry') if (newGeometry) { ValueCell.update(renderObject.values.drawCount, Geometry.getDrawCount(newGeometry)) - updateBoundingSphere(renderObject.values, newGeometry) } else { throw new Error('expected geometry to be given') } } + if (updateState.updateTransform || updateState.createGeometry) { + updateBoundingSphere(renderObject.values, newGeometry || geometry) + } + if (updateState.updateSize) { // not all geometries have size data, so check here if ('uSize' in renderObject.values) { -- GitLab