diff --git a/src/mol-view/viewer.ts b/src/mol-view/viewer.ts index 9cf36a5f27a1a15be1306164d72da9cb932a702b..4e4384cbcb6f44bbdd38c4fe0da4b64d5025b12f 100644 --- a/src/mol-view/viewer.ts +++ b/src/mol-view/viewer.ts @@ -110,6 +110,7 @@ namespace Viewer { const groupPickTarget = createRenderTarget(ctx, pickWidth, pickHeight) let pickDirty = true + let isPicking = false let drawPending = false let lastRenderTime = -1 const prevProjectionView = Mat4.zero() @@ -149,6 +150,7 @@ namespace Viewer { } function render(variant: RenderVariant, force?: boolean) { + if (isPicking) return false // const p = scene.boundingSphere.center // console.log(p[0], p[1], p[2]) // Vec3.set(controls.target, p[0], p[1], p[2]) @@ -226,6 +228,8 @@ namespace Viewer { function identify(x: number, y: number): PickingId | undefined { if (pickDirty) return undefined + isPicking = true + x *= ctx.pixelRatio y *= ctx.pixelRatio y = canvas.height - y // flip y @@ -246,6 +250,8 @@ namespace Viewer { ctx.readPixels(xp, yp, 1, 1, buffer) const groupId = decodeIdRGBA(buffer[0], buffer[1], buffer[2]) + isPicking = false + return { objectId, instanceId, groupId } }