Struct bevy_ui_navigation::menu::MenuSetting
source · pub struct MenuSetting {
pub wrapping: bool,
pub scope: bool,
}Expand description
A menu that isolate children Focusables from other focusables
and specify navigation method within itself.
Usage
A MenuSetting can be used to:
- Prevent navigation from one specific submenu to another
- Specify if 2d navigation wraps around the screen,
see
MenuSetting::wrapping. - Specify “scope menus” such that sending a
NavRequest::ScopeMovewhen the focused element is aFocusablenested within thisMenuSettingwill move cursor within this menu. SeeMenuSetting::scope. - Specify submenus and specify from where those submenus are reachable.
- Specify which entity will be the parents of this
MenuSetting. SeeMenuBuilder.
If you want to specify which Focusable should be focused first
when entering a menu,
you should mark one of the children of this menu with Focusable::prioritized.
Limitations
Menu navigation relies heavily on the bevy hierarchy being consistent. You might get inconsistent state under the folowing conditions:
- You despawned an entity in the
FocusState::Activestate - You changed the parent of a
Focusablemember of a menu to a new menu.
The navigation system might still work as expected,
however, Focusable::state may be missleading
for the length of one frame.
Panics
Menu loops will cause a panic. A menu loop is a way to go from menu A to menu B and then from menu B to menu A while never going back.
Don’t worry though, menu loops are really hard to make by accident,
and it will only panic if you use a NavRequest::FocusOn(entity)
where entity is inside a menu loop.
Fields§
§wrapping: boolWhether to wrap navigation.
When the player moves to a direction where there aren’t any focusables, if this is true, the focus will “wrap” to the other direction of the screen.
scope: boolWhether this is a scope menu.
A scope menu is controlled with NavRequest::ScopeMove
even when the focused element is not in this menu, but in a submenu
reachable from this one.
Implementations§
source§impl MenuSetting
impl MenuSetting
sourcepub fn new() -> Self
pub fn new() -> Self
Create a new non-wrapping, non-scopped MenuSetting,
those are the default values.
To create a wrapping/scopped menu, you can use:
MenuSetting::new().wrapping().scope().
Trait Implementations§
source§impl Clone for MenuSetting
impl Clone for MenuSetting
source§fn clone(&self) -> MenuSetting
fn clone(&self) -> MenuSetting
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for MenuSetting
impl Debug for MenuSetting
source§impl Default for MenuSetting
impl Default for MenuSetting
source§fn default() -> MenuSetting
fn default() -> MenuSetting
source§impl GetTypeRegistration for MenuSettingwhere
bool: Reflect,
impl GetTypeRegistration for MenuSettingwhere bool: Reflect,
fn get_type_registration() -> TypeRegistration
source§impl PartialEq<MenuSetting> for MenuSetting
impl PartialEq<MenuSetting> for MenuSetting
source§fn eq(&self, other: &MenuSetting) -> bool
fn eq(&self, other: &MenuSetting) -> bool
self and other values to be equal, and is used
by ==.source§impl Reflect for MenuSettingwhere
bool: Reflect,
impl Reflect for MenuSettingwhere bool: Reflect,
source§fn get_type_info(&self) -> &'static TypeInfo
fn get_type_info(&self) -> &'static TypeInfo
TypeInfo] of the underlying type. Read moresource§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any.source§fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
source§fn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
source§fn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
source§fn clone_value(&self) -> Box<dyn Reflect>
fn clone_value(&self) -> Box<dyn Reflect>
Reflect trait object. Read moresource§fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
source§fn reflect_owned(self: Box<Self>) -> ReflectOwned
fn reflect_owned(self: Box<Self>) -> ReflectOwned
source§fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
source§impl Struct for MenuSettingwhere
bool: Reflect,
impl Struct for MenuSettingwhere bool: Reflect,
source§fn field(&self, name: &str) -> Option<&dyn Reflect>
fn field(&self, name: &str) -> Option<&dyn Reflect>
name as a &dyn Reflect.source§fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>
fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>
name as a
&mut dyn Reflect.source§fn field_at(&self, index: usize) -> Option<&dyn Reflect>
fn field_at(&self, index: usize) -> Option<&dyn Reflect>
index as a
&dyn Reflect.source§fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
index
as a &mut dyn Reflect.source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
index.source§fn iter_fields(&self) -> FieldIter<'_>
fn iter_fields(&self) -> FieldIter<'_>
source§fn clone_dynamic(&self) -> DynamicStruct
fn clone_dynamic(&self) -> DynamicStruct
DynamicStruct].source§impl Typed for MenuSettingwhere
bool: Reflect,
impl Typed for MenuSettingwhere bool: Reflect,
impl Copy for MenuSetting
impl StructuralPartialEq for MenuSetting
Auto Trait Implementations§
impl RefUnwindSafe for MenuSetting
impl Send for MenuSetting
impl Sync for MenuSetting
impl Unpin for MenuSetting
impl UnwindSafe for MenuSetting
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,
§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.§impl<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere C: Component,
fn component_ids( components: &mut Components, storages: &mut Storages, ids: &mut impl FnMut(ComponentId) )
unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> Cwhere F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a, Aligned>,
fn get_components( self, func: &mut impl FnMut(StorageType, OwningPtr<'_, Aligned>) )
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§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.§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self using data from the given [World]§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere S: Struct,
§impl<T> GetPath for Twhere
T: Reflect,
impl<T> GetPath for Twhere T: Reflect,
§fn reflect_path<'r, 'p>(
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path<'r, 'p>( &'r self, path: &'p str ) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
path. Read more§fn reflect_path_mut<'r, 'p>(
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'r, 'p>( &'r mut self, path: &'p str ) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
path. Read more