Skip to content
Snippets Groups Projects
Commit 976542d3 authored by Alexander Rose's avatar Alexander Rose
Browse files

ensure mark changes are rendered (even w/ noDraw)

- schedule using forceNextRender to avoid rendering twice
parent a2e5fda6
No related branches found
No related tags found
No related merge requests found
...@@ -355,13 +355,20 @@ namespace Canvas3D { ...@@ -355,13 +355,20 @@ namespace Canvas3D {
changed = helper.camera.mark(loci, action) || changed; changed = helper.camera.mark(loci, action) || changed;
reprRenderObjects.forEach((_, _repr) => { changed = _repr.mark(loci, action) || changed; }); reprRenderObjects.forEach((_, _repr) => { changed = _repr.mark(loci, action) || changed; });
} }
if (changed && !noDraw) { if (changed) {
scene.update(void 0, true); if (noDraw) {
helper.handle.scene.update(void 0, true); // Even with `noDraw` make sure changes will be rendered.
helper.camera.scene.update(void 0, true); // Note that with this calling mark (with or without `noDraw`) multiple times
const prevPickDirty = pickHelper.dirty; // during a JS event loop iteration will only result in a single render call.
draw(true, true); forceNextRender = true;
pickHelper.dirty = prevPickDirty; // marking does not change picking buffers } else {
scene.update(void 0, true);
helper.handle.scene.update(void 0, true);
helper.camera.scene.update(void 0, true);
const prevPickDirty = pickHelper.dirty;
draw(true, true);
pickHelper.dirty = prevPickDirty; // marking does not change picking buffers
}
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment