Per-View bridge between section, a translucent visual proxy quad for each, and the TransformControls gizmo used to drag / orient them.

The controller manages every section plane in its View, not just the ones it created — it subscribes to Viewer.events.onSectionPlaneCreated / onSectionPlaneDestroyed so a plane added by other code still gets a proxy and shows up in the panel.

The proxy quad is a single 2D-ish surface in a dedicated SceneModel on a dedicated ViewLayer, drawn in the renderer's "overlay" bin so it isn't clipped by its own plane (or any other plane) and survives the depth-cleared overlay pass.

SectionPlanesPanel reads the controller's state and forwards UI events (delete, select, mode toggle, active toggle) to the matching public API.

Properties

Fires when a section plane has been added or removed (either via createSectionPlane or because external code created / destroyed one). The panel listens to redraw.

onSelectionChanged: EventEmitter<
    studio.systems.SectionPlanesController,
    { mode: studio.systems.SectionPlanesEditMode; plane: SectionPlane },
> = ...

Fires whenever the controller's gizmo target or edit mode changes — including detach ({plane: null}).

sceneModel: SceneModel
view: View

Accessors

Methods