pub trait ExtractComponent: Component {
type Query: WorldQuery + ReadOnlyWorldQuery;
type Filter: WorldQuery + ReadOnlyWorldQuery;
type Out: Bundle;
// Required method
fn extract_component(item: QueryItem<'_, Self::Query>) -> Option<Self::Out>;
}
Expand description
Describes how a component gets extracted for rendering.
Therefore the component is transferred from the “app world” into the “render world”
in the ExtractSchedule
step.
Required Associated Types§
sourcetype Query: WorldQuery + ReadOnlyWorldQuery
type Query: WorldQuery + ReadOnlyWorldQuery
ECS WorldQuery
to fetch the components to extract.
sourcetype Filter: WorldQuery + ReadOnlyWorldQuery
type Filter: WorldQuery + ReadOnlyWorldQuery
Filters the entities with additional constraints.
sourcetype Out: Bundle
type Out: Bundle
The output from extraction.
Returning None
based on the queried item can allow early optimization,
for example if there is an enabled: bool
field on Self
, or by only accepting
values within certain thresholds.
The output may be different from the queried component. This can be useful for example if only a subset of the fields are useful in the render world.
Out
has a Bundle
trait bound instead of a Component
trait bound in order to allow use cases
such as tuples of components as output.