Macro aframe::entity[][src]

macro_rules! entity {
    ($(attributes : $(($attr_id : literal, $attr_value : expr)), *) ? $(,) ?
 $(components : $(($cmp_id : literal, $cmp_value : expr)), *) ? $(,) ?
 $(children : $($child : expr), *) ?) => { ... };
    (primitive : $name : expr,
 $(attributes : $(($attr_id : literal, $attr_value : expr)), *) ? $(,) ?
 $(components : $(($cmp_id : literal, $cmp_value : expr)), *) ? $(,) ?
 $(children : $($child : expr), *) ?) => { ... };
}
Expand description

Defines the high-level API for describing entities, with one form for describing general entities and another for defining specific primitives. Here’s an example of a general entity definition:

entity!
{
    attributes: ("id", "cube-rig"),
    components: 
    ("position", component::Position{x: 0.0, y: 2.5, z: -2.0}),
    ("sound", component!
    {
        component::Sound,
        src: Cow::Borrowed("#ambient_music"), 
        volume: 0.5
    }),
    ("play-sound-on-event", component!
    {
        component::PlaySoundOnEvent,
        mode: component::PlaySoundOnEventMode::ToggleStop, 
        event: Cow::Borrowed("click")
    }),
    ("light", component!
    {
        component::Light,
        light_type: component::LightType::Point
        {
            decay: 1.0,
            distance: 50.0,
            shadow: component::OptionalLocalShadow::NoCast{},
        }, 
        intensity: 0.0
    }),
    ("animation__mouseenter", component!
    {
        component::Animation,
        property: Cow::Borrowed("light.intensity"),
        to: Cow::Borrowed("1.0"),
        start_events: component::List(Cow::Borrowed(&[Cow::Borrowed("mouseenter")])),
        dur: 250
    }),
    ("animation__mouseleave", component!
    {
        component::Animation,
        property: Cow::Borrowed("light.intensity"),
        to: Cow::Borrowed("0.0"),
        start_events: component::List(Cow::Borrowed(&[Cow::Borrowed("mouseleave")])),
        dur: 250
    }),
    children: entity!
    {
        primitive: primitive::A_BOX,
        attributes: ("id", "my-box"),
        components:
    }
},

and here’s an example of a primitive definition:

entity!
{
    // This can also jsut a be a string: "a-box" 
    primitive: primitive::A_BOX,
    attributes: ("id", "my-box"),
    components: 
}