pub struct SolidDisplay {
pub name: String,
pub source_handle: u32,
pub visible: bool,
pub color_override: Option<[f32; 3]>,
pub revision: u64,
pub mesh: DisplayMesh,
pub faces: Vec<FaceDisplay>,
pub edges: Vec<EdgeDisplay>,
pub vertices: Vec<VertexDisplay>,
pub visibility: EntityVisibility,
pub bbox: Aabb,
pub is_sketch: bool,
}Expand description
A displayed solid: mesh + named faces/edges/vertices + visibility.
Fields§
§name: StringKernel solid name — the scene key.
source_handle: u32The resident kernel handle this display was tessellated from (0 = none, e.g. a synthesized sheet with no kernel solid). Handles are monotonic and never recycled, so this is a stable identity for the geometry: the R10 display-reuse fast path keeps an existing display across a history rerun ONLY when the name’s resident handle still equals this — a name re-bound to a DIFFERENT handle (a SUBTRACT result inherits its target’s name; a roll-back replays that name’s ORIGINAL producer) must re-tessellate.
visible: bool§color_override: Option<[f32; 3]>Optional per-solid base color override (R14 — user-set solid color), else the name-hashed stable color is used.
revision: u64Monotonic content revision (R10). Every freshly built display gets a
unique value, so the renderer’s GPU-buffer cache re-uploads on any
rebuild — correct-by-default (equivalent to teardown-rebuild). The
reused-buffer fast path (keep a revision stable across a reused
pipeline result) is a follow-up optimization.
mesh: DisplayMesh§faces: Vec<FaceDisplay>§edges: Vec<EdgeDisplay>§vertices: Vec<VertexDisplay>§visibility: EntityVisibilityPer-entity + group hide state (individual faces/edges/vertices, or a
whole group). Default = everything visible; see crate::visibility.
Reused solids keep it across history reruns (this whole struct is cloned
forward); a re-tessellated solid resets to all-visible.
bbox: AabbWorld bbox over mesh positions (edges lie on the mesh by construction).
is_sketch: boolThis display is a SYNTHESIZED committed-sketch SHEET (planar face + named
boundary edges + corner vertices), not a kernel solid — it carries no
resident handle (source_handle == 0). The marker lets the UI treat a
sketch as a sketch: it is listed under “Sketches” (not among solids) yet is
pickable / selectable / measurable like any scene solid.
Trait Implementations§
Source§impl Clone for SolidDisplay
impl Clone for SolidDisplay
Source§fn clone(&self) -> SolidDisplay
fn clone(&self) -> SolidDisplay
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SolidDisplay
impl Debug for SolidDisplay
Source§impl<'de> Deserialize<'de> for SolidDisplay
impl<'de> Deserialize<'de> for SolidDisplay
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for SolidDisplay
impl RefUnwindSafe for SolidDisplay
impl Send for SolidDisplay
impl Sync for SolidDisplay
impl Unpin for SolidDisplay
impl UnsafeUnpin for SolidDisplay
impl UnwindSafe for SolidDisplay
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more