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§

source

type Query: WorldQuery + ReadOnlyWorldQuery

ECS WorldQuery to fetch the components to extract.

source

type Filter: WorldQuery + ReadOnlyWorldQuery

Filters the entities with additional constraints.

source

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§

source

fn extract_component(item: QueryItem<'_, Self::Query>) -> Option<Self::Out>

Defines how the component is transferred into the “render world”.

Implementations on Foreign Types§

source§

impl<T: Asset> ExtractComponent for Handle<T>

§

type Query = &'static Handle<T>

§

type Filter = ()

§

type Out = Handle<T>

source§

fn extract_component(handle: QueryItem<'_, Self::Query>) -> Option<Self::Out>

Implementors§