pub struct Trigger<'w, E, B: Bundle = ()> { /* private fields */ }Expand description
Type containing triggered Event information for a given run of an Observer. This contains the
Event data itself. If it was triggered for a specific Entity, it includes that as well. It also
contains event propagation information. See Trigger::propagate for more information.
Implementations§
Source§impl<'w, E, B: Bundle> Trigger<'w, E, B>
impl<'w, E, B: Bundle> Trigger<'w, E, B>
Sourcepub fn new(
event: &'w mut E,
propagate: &'w mut bool,
trigger: ObserverTrigger,
) -> Self
pub fn new( event: &'w mut E, propagate: &'w mut bool, trigger: ObserverTrigger, ) -> Self
Creates a new trigger for the given event and observer information.
Sourcepub fn event_type(&self) -> ComponentId
pub fn event_type(&self) -> ComponentId
Returns the event type of this trigger.
Sourcepub fn entity(&self) -> Entity
pub fn entity(&self) -> Entity
Returns the Entity that triggered the observer, could be Entity::PLACEHOLDER.
Sourcepub fn components(&self) -> &[ComponentId]
pub fn components(&self) -> &[ComponentId]
Returns the components that triggered the observer, out of the
components defined in B. Does not necessarily include all of them as
B acts like an OR filter rather than an AND filter.
Sourcepub fn observer(&self) -> Entity
pub fn observer(&self) -> Entity
Returns the Entity that observed the triggered event.
This allows you to despawn the observer, ceasing observation.
§Examples
/// Handle `MyEvent` and if it is done, stop observation.
fn my_observer(trigger: Trigger<MyEvent>, mut commands: Commands) {
if trigger.event().done {
commands.entity(trigger.observer()).despawn();
return;
}
// ...
}Sourcepub fn propagate(&mut self, should_propagate: bool)
pub fn propagate(&mut self, should_propagate: bool)
Enables or disables event propagation, allowing the same event to trigger observers on a chain of different entities.
The path an event will propagate along is specified by its associated Traversal component. By default, events
use () which ends the path immediately and prevents propagation.
To enable propagation, you must:
- Set
Event::Traversalto the component you want to propagate along. - Either call
propagate(true)in the first observer or setEvent::AUTO_PROPAGATEtotrue.
You can prevent an event from propagating further using propagate(false).
Sourcepub fn get_propagate(&self) -> bool
pub fn get_propagate(&self) -> bool
Returns the value of the flag that controls event propagation. See propagate for more information.
Trait Implementations§
Source§impl<E: 'static, B: Bundle> SystemInput for Trigger<'_, E, B>
impl<E: 'static, B: Bundle> SystemInput for Trigger<'_, E, B>
Used for ObserverSystems.
Source§type Param<'i> = Trigger<'i, E, B>
type Param<'i> = Trigger<'i, E, B>
FunctionSystems.Source§type Inner<'i> = Trigger<'i, E, B>
type Inner<'i> = Trigger<'i, E, B>
System::run.Source§fn wrap(this: Self::Inner<'_>) -> Self::Param<'_>
fn wrap(this: Self::Inner<'_>) -> Self::Param<'_>
SystemInput::Inner into a SystemInput::Param.Auto Trait Implementations§
impl<'w, E, B> Freeze for Trigger<'w, E, B>
impl<'w, E, B> RefUnwindSafe for Trigger<'w, E, B>where
E: RefUnwindSafe,
B: RefUnwindSafe,
impl<'w, E, B> Send for Trigger<'w, E, B>where
E: Send,
impl<'w, E, B> Sync for Trigger<'w, E, B>where
E: Sync,
impl<'w, E, B> Unpin for Trigger<'w, E, B>where
B: Unpin,
impl<'w, E, B = ()> !UnwindSafe for Trigger<'w, E, B>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.