Enum bevy_ui_navigation::events::NavEvent
source · pub enum NavEvent {
InitiallyFocused(Entity),
FocusChanged {
to: NonEmpty<Entity>,
from: NonEmpty<Entity>,
},
NoChanges {
from: NonEmpty<Entity>,
request: NavRequest,
},
Locked(LockReason),
Unlocked(LockReason),
}
Expand description
Events emitted by the navigation system.
Useful if you want to react to NavEvent::NoChanges
event, for example
when a “start game” button is focused and the NavRequest::Action
is
pressed.
Variants§
InitiallyFocused(Entity)
Tells the app which element is the first one to be focused.
This will be sent whenever the number of focused elements go from 0 to 1.
Meaning: whenever you spawn a new UI with Focusable
elements.
The order of selection when no Focusable
is focused yet is as follow:
- The prioritized
Focusable
of the root menu - Any prioritized
Focusable
- Any
Focusable
in the root menu - Any
Focusable
FocusChanged
Fields
Focus changed.
Notes
Both to
and from
are ascending, meaning that the focused and newly
focused elements are the first of their respective vectors.
NonEmpty
enables you to safely check to.first()
or from.first()
without returning an option. It is guaranteed that there is at least
one element.
NoChanges
Fields
from: NonEmpty<Entity>
The active elements from the focused one to the last active which is affected by the focus change.
request: NavRequest
The NavRequest
that didn’t do anything.
The NavRequest
didn’t lead to any change in focus.
Locked(LockReason)
The navigation lock has been enabled.
Either by a lock focusable or NavRequest::Lock
.
Once the navigation plugin enters a locked state, the only way to exit
it is to send a NavRequest::Unlock
.
Unlocked(LockReason)
The navigation lock has been released.
The navigation system was in a locked state triggered [Entity
],
is now unlocked, and receiving events again.
Implementations§
sourcepub fn is_activated(&self, entity: Entity) -> bool
pub fn is_activated(&self, entity: Entity) -> bool
Whether this event is a NavEvent::NoChanges
triggered by a NavRequest::Action
if entity
is the currently focused element.
Trait Implementations§
Auto Trait Implementations§
Blanket Implementations§
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
[ShaderType
] for self
. When used in [AsBindGroup
]
derives, it is safe to assume that all images in self
exist.§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§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.§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.