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:
Hakan Seven 2026-07-19 22:15:40 +03:00
commit b30f9b9741
10 changed files with 561 additions and 7 deletions

View file

@ -142,6 +142,7 @@ pub fn entity_type_name(et: &EntityType) -> &'static str {
EntityType::Seqend(_) => "Seqend",
EntityType::Ole2Frame(_) => "Ole2Frame",
EntityType::PolygonMesh(_) => "PolygonMesh",
EntityType::Light(_) => "Light",
EntityType::Unknown(_) => "Unknown",
}
}
@ -272,7 +273,7 @@ impl EntityTypeOps for EntityType {
Wipeout, AttributeDefinition, AttributeEntity, MLine,
Tolerance, Solid, Face3D, PolygonMesh, PolyfaceMesh, Mesh,
Table, Text, MText, Leader, MultiLeader, Underlay, Shape,
Ole2Frame, Helix,
Ole2Frame, Helix, Light,
],
_ => None,
)
@ -288,7 +289,7 @@ impl EntityTypeOps for EntityType {
Solid, Solid3D, Region, Body, Face3D, PolygonMesh,
PolyfaceMesh, Mesh, Table, Point, Spline, Text, MText,
Viewport, Insert, Leader, MultiLeader, Dimension, Hatch,
Underlay, Shape, Ole2Frame, Helix,
Underlay, Shape, Ole2Frame, Helix, Light,
],
_ => vec![],
)
@ -304,7 +305,7 @@ impl EntityTypeOps for EntityType {
Solid, Solid3D, Region, Body, Face3D, PolygonMesh,
PolyfaceMesh, Mesh, Table, Hatch, Point, Spline, Text, MText,
Viewport, Insert, Dimension, Leader, MultiLeader, Underlay,
Shape, Ole2Frame, Helix,
Shape, Ole2Frame, Helix, Light,
],
_ => vec![],
)
@ -320,7 +321,7 @@ impl EntityTypeOps for EntityType {
Solid, Solid3D, Region, Body, Face3D, PolygonMesh,
PolyfaceMesh, Mesh, Table, Hatch, Point, Spline, Text, MText,
Viewport, Insert, Dimension, Leader, MultiLeader, Underlay,
Shape, Ole2Frame, Helix,
Shape, Ole2Frame, Helix, Light,
],
_ => {},
)
@ -336,7 +337,7 @@ impl EntityTypeOps for EntityType {
Solid, Solid3D, Region, Body, Face3D, PolygonMesh,
PolyfaceMesh, Mesh, Table, Point, Spline, Text, MText,
Viewport, Insert, Leader, MultiLeader, Dimension, Hatch,
Underlay, Shape, Ole2Frame, Helix,
Underlay, Shape, Ole2Frame, Helix, Light,
],
_ => {},
)
@ -425,7 +426,7 @@ impl EntityTypeOps for EntityType {
Tolerance, Solid, Face3D, PolygonMesh, PolyfaceMesh, Mesh,
Table, MText, Point, Spline, Text, Viewport, Dimension,
Leader, MultiLeader, Underlay, Shape, Ole2Frame,
Solid3D, Region, Body, Surface, Helix,
Solid3D, Region, Body, Surface, Helix, Light,
],
_ => {},
)