Skip to main content

Component

Trait Component 

Source
pub trait Component: Any {
    // Required methods
    fn as_any(&self) -> &dyn Any;
    fn as_any_mut(&mut self) -> &mut dyn Any;
    fn name(&self) -> &'static str;

    // Provided methods
    fn set_id(&mut self, _component: ComponentId) { ... }
    fn init(&mut self, _emit: &mut dyn SignalEmitter, _component: ComponentId) { ... }
    fn cleanup(
        &mut self,
        _emit: &mut dyn SignalEmitter,
        _component: ComponentId,
    ) { ... }
    fn encode(&self) -> HashMap<String, Value> { ... }
    fn decode(&mut self, _data: &HashMap<String, Value>) -> Result<(), String> { ... }
    fn to_mms_ast(&self, _world: &World) -> ComponentExpression { ... }
}
Expand description

Component interface. init runs when the component is registered

Required Methods§

Source

fn as_any(&self) -> &dyn Any

Source

fn as_any_mut(&mut self) -> &mut dyn Any

Source

fn name(&self) -> &'static str

Short debug/type name for this component kind (e.g. “transform”, “camera”).

Provided Methods§

Source

fn set_id(&mut self, _component: ComponentId)

Source

fn init(&mut self, _emit: &mut dyn SignalEmitter, _component: ComponentId)

Called when component is added to the World

Source

fn cleanup(&mut self, _emit: &mut dyn SignalEmitter, _component: ComponentId)

Called when component is removed from the World.

Source

fn encode(&self) -> HashMap<String, Value>

Encode component data to a HashMap for serialization.

Components should serialize their data fields (not runtime handles).

Source

fn decode(&mut self, _data: &HashMap<String, Value>) -> Result<(), String>

Decode component data from a HashMap after deserialization.

Components should restore their data fields from the map.

Source

fn to_mms_ast(&self, _world: &World) -> ComponentExpression

Encode this component as an MMS Component Expression AST node.

The returned ComponentExpression should round-trip through the MMS pipeline: unparse → parse → eval_ce → spawn_tree reconstructs an equivalent component. Default impl emits a bare CE with no constructors/body, using name() (snake_case) as the type — this works for “tag” components with no state but most overrides will want to emit proper builder calls for their fields.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl Component for ActionComponent

Source§

impl Component for AmbientLightComponent

Source§

impl Component for AnimationComponent

Source§

impl Component for AssetPayloadComponent

Source§

impl Component for AudioBandPassFilterComponent

Source§

impl Component for AudioBufferSizeComponent

Source§

impl Component for AudioClipComponent

Source§

impl Component for AudioGainComponent

Source§

impl Component for AudioHighPassFilterComponent

Source§

impl Component for AudioLimiterComponent

Source§

impl Component for AudioLowPassFilterComponent

Source§

impl Component for AudioMixComponent

Source§

impl Component for AudioOscillatorComponent

Source§

impl Component for AudioOutputComponent

Source§

impl Component for AvatarBodyYawComponent

Source§

impl Component for AvatarControlComponent

Source§

impl Component for BackgroundColorComponent

Source§

impl Component for BackgroundComponent

Source§

impl Component for BloomComponent

Source§

impl Component for BlurPassComponent

Source§

impl Component for BoneRestPoseComponent

Source§

impl Component for BoundsComponent

Source§

impl Component for Camera2DComponent

Source§

impl Component for Camera3DComponent

Source§

impl Component for CameraXRComponent

Source§

impl Component for ClockComponent

Source§

impl Component for CollisionComponent

Source§

impl Component for CollisionShapeComponent

Source§

impl Component for ColorComponent

Source§

impl Component for ControllerXRComponent

Source§

impl Component for DataComponent

Source§

impl Component for DirectionalLightComponent

Source§

impl Component for EditorComponent

Source§

impl Component for EmissiveComponent

Source§

impl Component for EmissivePassComponent

Source§

impl Component for FitBoundsComponent

Source§

impl Component for GLTFComponent

Source§

impl Component for GestureCoordTypeComponent

Source§

impl Component for GravityComponent

Source§

impl Component for GridComponent

Source§

impl Component for HtmlElementComponent

Source§

impl Component for HttpClientComponent

Source§

impl Component for HttpServerComponent

Source§

impl Component for IKChainComponent

Source§

impl Component for InputComponent

Source§

impl Component for InputTransformModeComponent

Source§

impl Component for InputXRComponent

Source§

impl Component for InputXRGamepadComponent

Source§

impl Component for InspectLayoutComponent

Source§

impl Component for KeyframeComponent

Source§

impl Component for KineticResponseComponent

Source§

impl Component for LayoutBoundsComponent

Source§

impl Component for LayoutComponent

Source§

impl Component for LightQuantizationComponent

Source§

impl Component for MeshComponent

Source§

impl Component for MirrorComponent

Source§

impl Component for MusicNoteComponent

Source§

impl Component for NormalVisualisationComponent

Source§

impl Component for OpacityComponent

Source§

impl Component for OptionComponent

Source§

impl Component for OverlayComponent

Source§

impl Component for PointLightComponent

Source§

impl Component for PointerComponent

Source§

impl Component for PoseCaptureComponent

Source§

impl Component for PoseCaptureLibraryComponent

Source§

impl Component for PoseCapturePoseComponent

Source§

impl Component for QuatExtractYawComponent

Source§

impl Component for QuatTemporalFilterComponent

Source§

impl Component for QuatYawFollowComponent

Source§

impl Component for RayCastComponent

Source§

impl Component for RaycastableComponent

Source§

impl Component for RaycastableShapeComponent

Source§

impl Component for RenderGraphComponent

Source§

impl Component for RenderableComponent

Source§

impl Component for RendererSettingsComponent

Source§

impl Component for RendererStatsComponent

Source§

impl Component for RouterComponent

Source§

impl Component for ScrollingComponent

Source§

impl Component for SecondaryMotionComponent

Source§

impl Component for SelectableComponent

Source§

impl Component for SelectionComponent

Source§

impl Component for SerializeComponent

Source§

impl Component for SignalObserverRouterComponent

Source§

impl Component for SignalRouteUpwardComponent

Source§

impl Component for SkinnedMeshComponent

Source§

impl Component for SpringBoneComponent

Source§

impl Component for SpringJointComponent

Source§

impl Component for StencilClipComponent

Source§

impl Component for StyleComponent

Source§

impl Component for TextComponent

Source§

impl Component for TextInputComponent

Source§

impl Component for TextInputGlyphHitComponent

Source§

impl Component for TextShadowComponent

Source§

impl Component for TextureComponent

Source§

impl Component for TextureFilteringComponent

Source§

impl Component for TransformCameraSpecificComponent

Source§

impl Component for TransformComponent

Source§

impl Component for TransformDropComponent

Source§

impl Component for TransformForkTRSComponent

Source§

impl Component for TransformGizmoComponent

Source§

impl Component for TransformGizmoRotateComponent

Source§

impl Component for TransformGizmoScaleComponent

Source§

impl Component for TransformGizmoTranslateComponent

Source§

impl Component for TransformMapRotationComponent

Source§

impl Component for TransformMapScaleComponent

Source§

impl Component for TransformMapTranslationComponent

Source§

impl Component for TransformMergeTRSComponent

Source§

impl Component for TransformParentComponent

Source§

impl Component for TransformSampleAncestorComponent

Source§

impl Component for TransitionComponent

Source§

impl Component for TransparentCutoutComponent

Source§

impl Component for UVComponent

Source§

impl Component for Vector3TemporalFilterComponent

Source§

impl Component for XrComponent