HierarchyPropagatePlugin

Struct HierarchyPropagatePlugin 

Source
pub struct HierarchyPropagatePlugin<C: Component + Clone + PartialEq, F: QueryFilter = (), R: Relationship = ChildOf> { /* private fields */ }
Expand description

Plugin to automatically propagate a component value to all direct and transient relationship targets (e.g. bevy_ecs::hierarchy::Children) of entities with a Propagate component.

The plugin Will maintain the target component over hierarchy changes, adding or removing C when a relationship R (e.g. ChildOf) is added to or removed from a relationship tree with a Propagate<C> source, or if the Propagate<C> component is added, changed or removed.

Optionally you can include a query filter F to restrict the entities that are updated. Note that the filter is not rechecked dynamically: changes to the filter state will not be picked up until the Propagate component is touched, or the hierarchy is changed. All members of the tree between source and target must match the filter for propagation to reach a given target. Individual entities can be skipped or terminate the propagation with the PropagateOver and PropagateStop components.

The schedule can be configured via HierarchyPropagatePlugin::new. You should be sure to schedule your logic relative to this set: making changes that modify component values before this logic, and reading the propagated values after it.

Implementations§

Source§

impl<C: Component + Clone + PartialEq, F: QueryFilter, R: Relationship> HierarchyPropagatePlugin<C, F, R>

Source

pub fn new(schedule: impl ScheduleLabel) -> Self

Construct the plugin. The propagation systems will be placed in the specified schedule.

Trait Implementations§

Source§

impl<C: Component + Clone + PartialEq, F: QueryFilter + 'static, R: Relationship> Plugin for HierarchyPropagatePlugin<C, F, R>

Source§

fn build(&self, app: &mut App)

Configures the App to which this plugin is added.
Source§

fn ready(&self, _app: &App) -> bool

Has the plugin finished its setup? This can be useful for plugins that need something asynchronous to happen before they can finish their setup, like the initialization of a renderer. Once the plugin is ready, finish should be called.
Source§

fn finish(&self, _app: &mut App)

Finish adding this plugin to the App, once all plugins registered are ready. This can be useful for plugins that depends on another plugin asynchronous setup, like the renderer.
Source§

fn cleanup(&self, _app: &mut App)

Runs after all plugins are built and finished, but before the app schedule is executed. This can be useful if you have some resource that other plugins need during their build step, but after build you want to remove it and send it to another thread.
Source§

fn name(&self) -> &str

Configures a name for the Plugin which is primarily used for checking plugin uniqueness and debugging.
Source§

fn is_unique(&self) -> bool

If the plugin can be meaningfully instantiated several times in an App, override this method to return false.

Auto Trait Implementations§

§

impl<C, F, R> Freeze for HierarchyPropagatePlugin<C, F, R>

§

impl<C, F = (), R = ChildOf> !RefUnwindSafe for HierarchyPropagatePlugin<C, F, R>

§

impl<C, F, R> Send for HierarchyPropagatePlugin<C, F, R>

§

impl<C, F, R> Sync for HierarchyPropagatePlugin<C, F, R>

§

impl<C, F, R> Unpin for HierarchyPropagatePlugin<C, F, R>

§

impl<C, F = (), R = ChildOf> !UnwindSafe for HierarchyPropagatePlugin<C, F, R>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoResult<T> for T

Source§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Source§

impl<A> Is for A
where A: Any,

Source§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ConditionalSend for T
where T: Send,

Source§

impl<Marker, T> Plugins<Marker> for T
where T: Plugins<Marker>,