forked from 1b-agent/opencadstudio-upstream
fix(viewport): apply per-viewport layer freeze to fills, images and meshes
A content viewport that froze layers still drew those layers' hatches, 2-D solids, images, OLE frames and 3-D solids — only its wires honoured `Viewport.frozen_layers`. A viewport meant to be empty (all content layers frozen) leaked the whole model instead. viewport_data_for fed content viewports the full model hatch/wipeout/ image/mesh sets with no per-viewport frozen filter. Thread the viewport's frozen-layer set through the builders (synced_hatch_models, exploded_insert_hatch_models, wipeout_models, image_models, mesh_models, instanced_block_meshes) via Scene::layer_frozen_in — the same layer-name→handle→membership test the wire path uses — and expose *_for_viewport accessors that cache the filtered set per order-independent frozen-set signature (viewports sharing a frozen set share the build; an empty set returns the shared unfiltered arc, so model tiles and non-freezing viewports are byte-identical). Each viewport renders in its own pipeline slot with the hatch upload gated on geometry_epoch, so a per-viewport filtered set uploads once per epoch rather than every frame. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
fd33810057
commit
b884e33f38
4 files changed
+222
-28
No files matched your search
+1
-1
@@ -238,7 +238,7 @@ impl Scene {
|
||||
} else {
|
||||
self.bg_color
|
||||
};
|
||||
let exploded = self.exploded_insert_hatch_models(layout_block, hatch_bg, false);
|
||||
let exploded = self.exploded_insert_hatch_models(layout_block, hatch_bg, false, None);
|
||||
models.extend(exploded);
|
||||
Arc::new(models)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user