Bladeren bron

fix repr boundingsphere update

Alexander Rose 6 jaren geleden
bovenliggende
commit
f90751aaec
3 gewijzigde bestanden met toevoegingen van 6 en 4 verwijderingen
  1. 0 1
      src/mol-canvas3d/canvas3d.ts
  2. 2 2
      src/mol-gl/scene.ts
  3. 4 1
      src/mol-repr/structure/units-visual.ts

+ 0 - 1
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))
             }

+ 2 - 2
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);
     });
 

+ 4 - 1
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) {