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.
Required Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.