From 5f672568998649f54b84da182b54270814da8f22 Mon Sep 17 00:00:00 2001
From: Alexander Rose <alexander.rose@weirdbyte.de>
Date: Tue, 4 Dec 2018 16:59:00 +0900
Subject: [PATCH] fixed bounding sphere helper removal of old spheres

---
 src/mol-canvas3d/canvas3d.ts                      | 4 ++--
 src/mol-canvas3d/helper/bounding-sphere-helper.ts | 7 +++++++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts
index e815b7f3f..8324d4406 100644
--- a/src/mol-canvas3d/canvas3d.ts
+++ b/src/mol-canvas3d/canvas3d.ts
@@ -299,11 +299,11 @@ namespace Canvas3D {
                 repr.renderObjects.forEach(o => scene.add(o))
             }
             reprRenderObjects.set(repr, newRO)
-            reprCount.next(reprRenderObjects.size)
             scene.update()
             if (debugHelper.isEnabled) debugHelper.update()
             isUpdating = false
             requestDraw(true)
+            reprCount.next(reprRenderObjects.size)
         }
 
         handleResize()
@@ -327,11 +327,11 @@ namespace Canvas3D {
                     isUpdating = true
                     renderObjects.forEach(o => scene.remove(o))
                     reprRenderObjects.delete(repr)
-                    reprCount.next(reprRenderObjects.size)
                     scene.update()
                     if (debugHelper.isEnabled) debugHelper.update()
                     isUpdating = false
                     requestDraw(true)
+                    reprCount.next(reprRenderObjects.size)
                 }
             },
             update: () => scene.update(),
diff --git a/src/mol-canvas3d/helper/bounding-sphere-helper.ts b/src/mol-canvas3d/helper/bounding-sphere-helper.ts
index cf86f9073..cb2c3d85e 100644
--- a/src/mol-canvas3d/helper/bounding-sphere-helper.ts
+++ b/src/mol-canvas3d/helper/bounding-sphere-helper.ts
@@ -45,6 +45,8 @@ export class BoundingSphereHelper {
         if (newSceneData) this.sceneData = newSceneData
 
         const oldRO = new Set<RenderObject>()
+        this.objectsData.forEach((_, ro) => oldRO.add(ro))
+        this.instancesData.forEach((_, ro) => oldRO.add(ro))
         this.parent.forEach((r, ro) => {
             const objectData = this.objectsData.get(ro)
             const newObjectData = updateBoundingSphereData(this.scene, r.boundingSphere, objectData, ColorNames.tomato)
@@ -69,6 +71,11 @@ export class BoundingSphereHelper {
                 this.scene.remove(objectData.renderObject)
                 this.objectsData.delete(ro)
             }
+            const instanceData = this.instancesData.get(ro)
+            if (instanceData) {
+                this.scene.remove(instanceData.renderObject)
+                this.instancesData.delete(ro)
+            }
         })
 
         this.scene.update()
-- 
GitLab