Skip to main content

Module engine_state

Module engine_state 

Source
Expand description

EngineState — the windowing-agnostic viewer state machine the host UI programs against (R3): scene + camera + controls + settings + emphasis, plus the whole event/command/query surface (run-history feed, pointer/wheel ingestion, camera commands, picking, world→screen, visibility). No GPU, no canvas — the wasm Engine and the winit desktop shell both wrap this; it is fully unit-testable on native.

Everything crosses the R3 boundary as plain JSON/scalars: the host never holds a renderer object, only names, ids, and JSON.

Modules§

cam_ops
The CAM workbench’s engine-side seams: the reference picker for a CAM record’s field, committing into the document’s cam block.
replace_component
Replace component (swap an occurrence’s part, keep its mates by name when the parts share lineage; mark the rest unresolved) — replace_components, the report, repair, and the Save As lineage stamp. REPLACE COMPONENT: swap the part an ACOMP occurrence (or every occurrence of a part) shows, keeping the occurrence — its id, pose, fixed flag and attributes — and every mate that still has something to hold on to.

Structs§

BakedFrame
One baked frame: every movable occurrence’s world pose (row-major 4×4, the kernel’s spelling), and whether the mates held it.
BoardBuild
What EngineState::refresh_board_geometry built, for the tests and the cost figures in the validation record.
CageArm
The gizmo’s cage subject: which points, and the grab snapshot of a drag.
CageSummary
The cage as the editor’s panel describes it.
ClearancePair
One NEAR-MISS component pair: no interference, but the gap between them is at or under the clearance threshold. distance (mm) is measured over the display tessellation; witness is the closest point on a then b.
ComponentInfo
One assembly component instance as the APP sees it: the owning ACOMP feature id, the parts-library part name, the authored rigid pose (inputParams. transform — {translate, rotateEulerDeg}, intrinsic-XYZ degrees), the grounded flag, and the member solid names currently in the display scene.
ComponentMoveArm
The component-Move controller state (one per engine, like TransformArm).
ConnectionPatch
A patch the panel applies to one connection: every field optional, only the present ones change.
ConstraintDrag
A live constraint-handle drag: which constraint + which inputParams field (distance / angle), the params snapshot the commit mutates, and the live preview value the overlay/label show while dragging.
EmbeddedOnly
The sink that stores nothing: every entry stays embedded-only. The default for headless callers and tests, which have no store to write to.
EngineState
ExplodePlayback
The animation state of the active view’s steps.
ExplodeStep
One step of an exploded view (an explode row of a PMI view).
ExplodedView
A PMI view that holds explode steps.
ExpressionPreview
A transient expressions source for EngineState::set_expression_preview.
Insertion
A step’s insertion motion in the in-app player: its arrowed parts start out along their arrows and move home. Display poses only (the explode machinery’s), never a write to the document.
InstructionsPdfExport
A PDF prepared over successive frames. Heavy exact passes run on the history runner. Dropping this job cancels delivery; the document stamp prevents mixed-revision output.
InterferencePair
One INTERFERING component pair: the two owning ACOMP feature ids, their summed intersection volume (mm³, over all member-solid cross pairs), and whether either participant is currently hidden (it still participates — the window notes it).
InterferenceReport
The result of one interference run — everything the results window shows. pairs empty + skipped/unverified empty = the green all-clear.
MotorMate
A mate a motor can drive.
PmiLabel
One chip of EngineState::pmi_labels; serialised, the __brepPmiLabels row.
PmiModelingSnapshot
The modeling state remembered while the PMI workbench is active.
PmiViewPatch
A patch the panel applies to one view’s name / display state.
PublishedMotion
A study of the assembly whose published motion a step can take.
RefSelectField
The active reference pick as a FORM sees it (see EngineState::ref_select_field): the subject whose field is being filled, the field’s path, and the running list.
RefSelectState
The modal state of the reference-selection widget while it is ACTIVE: which feature-dialog field is being filled, what it accepts, and the running list of picked kernel names (the source of truth — added by picking in the view, removed via the per-line X). See the ref-select methods below.
SelectionFilter
Which entity KINDS a plain viewport click may select.
SimulationPlayback
The study being played or scrubbed, its bake so far and what the displays show of it.
Sketch3dEdit
The active 3D sketch edit.
SketchConstraintAction
One applicable-constraint palette entry: the glyph passed back to EngineState::sketch_add_constraint plus a human tooltip and a dimensional tag (whether it opens a value the solver seeds from the current measurement).
SketchDrag
One in-flight sketch drag (S2): the grabbed points and the anchor uv. A single entry for a point grab; all of a geometry’s (deduped) points for a geometry grab (a rigid translate). Each point tracks the cursor by an ABSOLUTE orig + (uv - anchor) (never incremental — the solver moves points between frames, so incremental deltas would drift).
SketchEdit
The active engine-native sketch edit — the live session plus the state to restore when sketch mode exits.
SketchEntityRow
One row in a sketch entity-LIST panel (Points / Curves / Constraints) — the display label plus the (kind, id) needed to select / hover / delete it, and its current selected/construction state for row styling. Built by EngineState::sketch_point_rows / sketch_geometry_rows / sketch_constraint_rows; the panel renders them and routes clicks back through EngineState::sketch_select_entity / sketch_hover_entity.
SplineAnchorRow
One anchor as the editor lists it.
StepAssemblyImport
The choices the import dialog collects.
StepAssemblyProbe
What the import dialog needs to describe a STEP file’s structure — counts only, so the probe can answer without building anything.
StepAssemblyReport
What an import did — the numbers the status line and notice report.
TransformArm
The transform-controls gizmo controller state (see the impl block below).
TypedMove
The outcome of one typed move (EngineState::component_move_typed): the field, the value typed, how much of it the mates let through along that axis, and the constraints that stopped the rest.
WireBomLine
One wire as a BOM line.

Enums§

CageSelect
How a pick or a list action changes the selection.
ComponentInsert
What a component-insert names: an EXISTING parts-library entry (skip the store read — just add an instance) or a NEW part payload to hand to add_part_to_library (which dedups by sourceKey+signature and returns the EFFECTIVE entry name the instance must reference).
GizmoMode
Which of the two gizmos is currently armed for the feature. Transform shows the move/rotate gizmo; Dimension shows the on-canvas draggable dimension annotations (feature-dimensions FD-1). Expanding a feature arms Dimension; the viewport sphere/center toggle flips to Transform and back. The two modes are EXCLUSIVE — the transform gizmo never renders in Dimension mode and vice-versa.
InstructionsRefField
Which occurrence field of a step a pick fills (RefSelectTarget::Instructions).
NoticeSeverity
How a notice is drawn: an Error (a refusal, a failure — what EngineState::push_notice queues), a Warning (it worked, and something needs a look) or Info (it worked: “Updated 2 part(s)”, “Saved ‘widget’”).
PlayTo
Where the player goes.
PortRefField
Which of a connection point’s two reference fields a pick is filling.
RefSelectTarget
WHO a finished reference-selection commits to: a history FEATURE’s params (the original widget) or an ASSEMBLY CONSTRAINT’s inputParams (same modal, different commit lane — see assembly_ops::begin_ref_select_for_constraint).
Sketch3dCursorHit
What a cursor position resolved to when placing a point.
StepProbeOutcome
What a STEP probe found, as the file panel consumes it (see EngineState::submit_step_probe).
WireLengthState
Why a wire line has, or has not, a cut length.

Constants§

BOARD_SOLID_PREFIX
Every board body’s name leads with this, so the scene, the Scene tree and the stale sweep can tell one apart from a feature’s solid. No : — that is the occurrence namespace an assembly reads.
CAGE_PICK_RADIUS_PX
A viewport click within this many CSS pixels of a dot picks it.
INSTRUCTIONS_IMAGE_PX
A per-step PNG’s edge, in pixels.
INTERFERENCE_OVERLAY_GROUP
The viewport overlay group carrying the interference volumes (red triangles) and the near-miss gaps (amber segment + end points).
OCCURRENCE_ATTRIBUTES
The ACOMP inputParams attribute-record key.
PART_ATTRIBUTES
The part document’s attribute-record key (see the module’s BOM-attributes block). A top-level document key, so it rides save/open untouched. Defined by the kernel, which reads the record’s Part_Number for PRODUCT.id on a structured STEP export. The top-level document key holding a part’s own BOM attribute record ({ "Part_Number": "PN-7", "Material": "6061", ... }). Owned by the app’s document model; the kernel reads it only to stamp PRODUCT.id.
SUBSTRATE_SOLID
The substrate body’s scene name.
TOPOLOGY_WAIT
How long an export waits for the runner’s topology reply before it draws what it has (EngineState::instructions_topology_ready).
VIAS_SOLID
The via-barrel body’s scene name.

Traits§

PartSink
Where an imported assembly’s unique parts are written, so each becomes a document in its own right rather than a payload embedded in one assembly.

Functions§

assembly_signature
The signature of an assembly document a published motion was made from: the document’s content hash with every study’s published motion left out, so it reads the same before and after a publish and differs once anything else in the document (parts, mates, a study) changes.
board_default_color
The colour a board body or one of its FACES draws in when the metadata store has none of its own for it — the fallback sync_colors_from_metadata reaches for, since a derived body has no producing feature to have been coloured by. None for every name that is not a board body’s or a face of one; a stored color attribute still wins over all of it.
document_signature
A STABLE content signature of a document: a sorted-key JSON walk hashed with the (fixed-key, cross-process-deterministic) std SipHash. The ONE signature fn, at the ENGINE altitude so app-side and engine-side writers share one copy: the app’s insert flow (panels::file), the edit-in-place Finish (panels::assembly_edit::refresh_library_entry) and the update-components comparison (panels::update_components) all write/compare a parts-library sourceSignature with THIS function — a freshly inserted, unchanged part must always compare up-to-date, which a second copy would break the moment either drifted. Uses the kernel’s shared sorted-key hash, also used for in-memory library fingerprints. Invalid JSON retains the raw-text hashing fallback.
nested_fixed_state
A nested occurrence’s Fix/Float as the assembly solve reads it.
pmi_view_params
A view’s current values in pmi_view_schema’s shape — the form’s seed.
pmi_view_schema
The PMI view dialog’s schema — what a view’s own form edits: its name, the text size its labels draw at and whether it shows the model in wireframe, plus the two re-capture actions its row menu also offers. Shaped like every other object schema so the shared form view draws it; EngineState::pmi_update_view applies what it edits.
world_vertex_ref
{solid}@x,y,z in WORLD coordinates (the PMI vertex-ref convention).