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 will remove the component from the entity in
the render world. This can be used, for example, to conditionally extract camera settings
in order to disable a rendering feature on the basis of those settings, without removing
the component from the entity in the main world.
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.