pub trait ExtractComponent: Component {
type QueryData: ReadOnlyQueryData;
type QueryFilter: QueryFilter;
type Out: Bundle;
// Required method
fn extract_component(
item: QueryItem<'_, Self::QueryData>
) -> 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 QueryData: ReadOnlyQueryData
type QueryData: ReadOnlyQueryData
ECS ReadOnlyQueryData to fetch the components to extract.
sourcetype QueryFilter: QueryFilter
type QueryFilter: QueryFilter
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.