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::Traversal
to the component you want to propagate along. - Either call
propagate(true)
in the first observer or setEvent::AUTO_PROPAGATE
totrue
.
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 ObserverSystem
s.
Source§type Param<'i> = Trigger<'i, E, B>
type Param<'i> = Trigger<'i, E, B>
FunctionSystem
s.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.