pub struct ComponentEntry {
name: &'static str,
module_path: Option<&'static str>,
encode_json: fn(&Scope<'_>, Entity) -> Result<String, ComponentError>,
default_partial: fn() -> Result<Partial<'static, false>, ComponentError>,
current_partial: fn(&Scope<'_>, Entity) -> Result<Partial<'static, false>, ComponentError>,
set: fn(&Scope<'_>, Entity, Partial<'static, false>) -> Result<(), ComponentError>,
push: fn(&mut DynamicBundle, Partial<'static, false>) -> Result<(), ComponentError>,
}reflect only.Expand description
One component a bridge can address.
Build one with ComponentEntry::new and submit it with
inventory::submit!. The constructor is const, so a submission is a
static initializer and costs nothing at run time.
Fields§
§name: &'static strThe bare type name a client addresses the component by.
module_path: Option<&'static str>The module the type is defined in, which with the name addresses the component too and tells two same-named types apart.
encode_json: fn(&Scope<'_>, Entity) -> Result<String, ComponentError>The component’s value as JSON text, or why it could not be read.
default_partial: fn() -> Result<Partial<'static, false>, ComponentError>A partial value over the component’s Default, or over nothing when it has none.
current_partial: fn(&Scope<'_>, Entity) -> Result<Partial<'static, false>, ComponentError>A partial value over the entity’s current component, or why it cannot be read.
set: fn(&Scope<'_>, Entity, Partial<'static, false>) -> Result<(), ComponentError>Overwrite the component with the value a partial holds.
push: fn(&mut DynamicBundle, Partial<'static, false>) -> Result<(), ComponentError>Push the value a partial holds into a builder.
Implementations§
Source§impl ComponentEntry
impl ComponentEntry
Sourcepub const fn new<C: Facet<'static> + Clone>() -> Self
pub const fn new<C: Facet<'static> + Clone>() -> Self
The entry for C, using the reflection C derives.
Spawning a C from a partial value needs a base to merge it over, which is C’s own Default when it has one: a Default C is spawned from only the fields that matter, while a C without one has to name every field. Which of the two applies is read from the reflection C derives, so a component that gains a Default starts merging over it without the submission changing.