forked from 1b-agent/opencadstudio-upstream
feat(scene): draw nonprint light, camera and geo-location glyphs
Lights, camera views and the geographic-location marker had no on-screen representation. Add display glyphs for all three: - Lights render through a new EntityType::Light: a cone/flashlight for spot lights, a wire sphere for point lights, a sun for distant lights, sized in screen space (fixed-world fallback). - Camera views (perspective VIEW records) and the GEODATA "daisy" marker are synthesized into the model-space resident wire set from the document, since they are not entities. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
007d03422e
commit
b30f9b9741
10 files changed
+561
-7
No files matched your search
@@ -18,6 +18,7 @@ pub mod view;
|
||||
// blocks and/or free functions). Pure text-move from the original mod.rs.
|
||||
mod entity;
|
||||
mod group_layer;
|
||||
mod scene_markers;
|
||||
mod camera_ops;
|
||||
mod layout;
|
||||
mod modify;
|
||||
@@ -2915,6 +2916,12 @@ impl Scene {
|
||||
let t_tess = iced::time::Instant::now();
|
||||
let mut wires =
|
||||
self.wires_for_block_culled(block, None, None, frozen_layers, anno_scale_override);
|
||||
// Synthesized nonprint markers (geo-location daisy) live in model space
|
||||
// only and are derived from document objects, not entities — append them
|
||||
// to the freshly built resident set (incremental patches preserve them).
|
||||
if block == self.model_space_block_handle() {
|
||||
self.append_scene_markers(&mut wires, bg);
|
||||
}
|
||||
self.apply_refedit_fade(&mut wires, bg);
|
||||
self.last_tess_ms.set(t_tess.elapsed().as_secs_f32() * 1000.0);
|
||||
self.last_tess_wires.set(wires.len());
|
||||
|
||||
Reference in new issue
Block a user