pub struct Gamepad { /* private fields */ }
Expand description
Stores a connected gamepad’s metadata such as the name and its GamepadButton
and GamepadAxis
.
An entity with this component is spawned automatically after GamepadConnectionEvent
and updated by gamepad_event_processing_system
.
See also GamepadSettings
for configuration.
§Examples
fn gamepad_usage_system(gamepads: Query<(&Name, &Gamepad)>) {
for (name, gamepad) in &gamepads {
println!("{name}");
if gamepad.just_pressed(GamepadButton::North) {
println!("{} just pressed North", name)
}
if let Some(left_stick_x) = gamepad.get(GamepadAxis::LeftStickX) {
println!("left stick X: {}", left_stick_x)
}
}
}
Implementations§
Source§impl Gamepad
impl Gamepad
Sourcepub fn vendor_id(&self) -> Option<u16>
pub fn vendor_id(&self) -> Option<u16>
Returns the USB vendor ID as assigned by the USB-IF, if available.
Sourcepub fn product_id(&self) -> Option<u16>
pub fn product_id(&self) -> Option<u16>
Returns the USB product ID as assigned by the vendor, if available.
Sourcepub fn get(&self, input: impl Into<GamepadInput>) -> Option<f32>
pub fn get(&self, input: impl Into<GamepadInput>) -> Option<f32>
Returns the analog data of the provided GamepadAxis
or GamepadButton
.
Sourcepub fn get_unclamped(&self, input: impl Into<GamepadInput>) -> Option<f32>
pub fn get_unclamped(&self, input: impl Into<GamepadInput>) -> Option<f32>
Returns the unclamped analog data of the provided GamepadAxis
or GamepadButton
.
This value may be outside the Axis::MIN
and Axis::MAX
range.
Sourcepub fn left_stick(&self) -> Vec2
pub fn left_stick(&self) -> Vec2
Returns the left stick as a Vec2
Sourcepub fn right_stick(&self) -> Vec2
pub fn right_stick(&self) -> Vec2
Returns the right stick as a Vec2
Sourcepub fn pressed(&self, button_type: GamepadButton) -> bool
pub fn pressed(&self, button_type: GamepadButton) -> bool
Returns true
if the GamepadButton
has been pressed.
Sourcepub fn any_pressed(
&self,
button_inputs: impl IntoIterator<Item = GamepadButton>,
) -> bool
pub fn any_pressed( &self, button_inputs: impl IntoIterator<Item = GamepadButton>, ) -> bool
Returns true
if any item in the GamepadButton
iterator has been pressed.
Sourcepub fn all_pressed(
&self,
button_inputs: impl IntoIterator<Item = GamepadButton>,
) -> bool
pub fn all_pressed( &self, button_inputs: impl IntoIterator<Item = GamepadButton>, ) -> bool
Returns true
if all items in the GamepadButton
iterator have been pressed.
Sourcepub fn just_pressed(&self, button_type: GamepadButton) -> bool
pub fn just_pressed(&self, button_type: GamepadButton) -> bool
Returns true
if the GamepadButton
has been pressed during the current frame.
Note: This function does not imply information regarding the current state of ButtonInput::pressed
or ButtonInput::just_released
.
Sourcepub fn any_just_pressed(
&self,
button_inputs: impl IntoIterator<Item = GamepadButton>,
) -> bool
pub fn any_just_pressed( &self, button_inputs: impl IntoIterator<Item = GamepadButton>, ) -> bool
Returns true
if any item in the GamepadButton
iterator has been pressed during the current frame.
Sourcepub fn all_just_pressed(
&self,
button_inputs: impl IntoIterator<Item = GamepadButton>,
) -> bool
pub fn all_just_pressed( &self, button_inputs: impl IntoIterator<Item = GamepadButton>, ) -> bool
Returns true
if all items in the GamepadButton
iterator have been just pressed.
Sourcepub fn just_released(&self, button_type: GamepadButton) -> bool
pub fn just_released(&self, button_type: GamepadButton) -> bool
Returns true
if the GamepadButton
has been released during the current frame.
Note: This function does not imply information regarding the current state of ButtonInput::pressed
or ButtonInput::just_pressed
.
Sourcepub fn any_just_released(
&self,
button_inputs: impl IntoIterator<Item = GamepadButton>,
) -> bool
pub fn any_just_released( &self, button_inputs: impl IntoIterator<Item = GamepadButton>, ) -> bool
Returns true
if any item in the GamepadButton
iterator has just been released.
Sourcepub fn all_just_released(
&self,
button_inputs: impl IntoIterator<Item = GamepadButton>,
) -> bool
pub fn all_just_released( &self, button_inputs: impl IntoIterator<Item = GamepadButton>, ) -> bool
Returns true
if all items in the GamepadButton
iterator have just been released.
Sourcepub fn get_pressed(&self) -> impl Iterator<Item = &GamepadButton>
pub fn get_pressed(&self) -> impl Iterator<Item = &GamepadButton>
Returns an iterator over all digital buttons that are pressed.
Sourcepub fn get_just_pressed(&self) -> impl Iterator<Item = &GamepadButton>
pub fn get_just_pressed(&self) -> impl Iterator<Item = &GamepadButton>
Returns an iterator over all digital buttons that were just pressed.
Sourcepub fn get_just_released(&self) -> impl Iterator<Item = &GamepadButton>
pub fn get_just_released(&self) -> impl Iterator<Item = &GamepadButton>
Returns an iterator over all digital buttons that were just released.
Sourcepub fn get_analog_axes(&self) -> impl Iterator<Item = &GamepadInput>
pub fn get_analog_axes(&self) -> impl Iterator<Item = &GamepadInput>
Returns an iterator over all analog axes.
Sourcepub fn digital(&self) -> &ButtonInput<GamepadButton>
pub fn digital(&self) -> &ButtonInput<GamepadButton>
ButtonInput
of GamepadButton
representing their digital state
Sourcepub fn digital_mut(&mut self) -> &mut ButtonInput<GamepadButton>
pub fn digital_mut(&mut self) -> &mut ButtonInput<GamepadButton>
Mutable ButtonInput
of GamepadButton
representing their digital state. Useful for mocking inputs.
Sourcepub fn analog(&self) -> &Axis<GamepadInput>
pub fn analog(&self) -> &Axis<GamepadInput>
Axis
of GamepadButton
representing their analog state.
Sourcepub fn analog_mut(&mut self) -> &mut Axis<GamepadInput>
pub fn analog_mut(&mut self) -> &mut Axis<GamepadInput>
Mutable Axis
of GamepadButton
representing their analog state. Useful for mocking inputs.
Trait Implementations§
Source§impl Component for Gamepad
impl Component for Gamepad
Required Components: GamepadSettings
.
A component’s Required Components are inserted whenever it is inserted. Note that this will also insert the required components of the required components, recursively, in depth-first order.
Source§const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
Source§fn register_required_components(
requiree: ComponentId,
components: &mut Components,
storages: &mut Storages,
required_components: &mut RequiredComponents,
inheritance_depth: u16,
)
fn register_required_components( requiree: ComponentId, components: &mut Components, storages: &mut Storages, required_components: &mut RequiredComponents, inheritance_depth: u16, )
Source§fn register_component_hooks(hooks: &mut ComponentHooks)
fn register_component_hooks(hooks: &mut ComponentHooks)
ComponentHooks
.Source§impl FromReflect for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl FromReflect for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn from_reflect(reflect: &dyn PartialReflect) -> Option<Self>
fn from_reflect(reflect: &dyn PartialReflect) -> Option<Self>
Self
from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read moreSource§impl GetTypeRegistration for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl GetTypeRegistration for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration
for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl PartialReflect for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl PartialReflect for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn clone_value(&self) -> Box<dyn PartialReflect>
fn clone_value(&self) -> Box<dyn PartialReflect>
Reflect
trait object. Read moreSource§fn try_apply(&mut self, value: &dyn PartialReflect) -> Result<(), ApplyError>
fn try_apply(&mut self, value: &dyn PartialReflect) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
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 try_into_reflect(
self: Box<Self>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<Self>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&dyn Reflect>
fn try_as_reflect(&self) -> Option<&dyn Reflect>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
fn try_as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
Source§fn into_partial_reflect(self: Box<Self>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<Self>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &dyn PartialReflect
fn as_partial_reflect(&self) -> &dyn PartialReflect
Source§fn as_partial_reflect_mut(&mut self) -> &mut dyn PartialReflect
fn as_partial_reflect_mut(&mut self) -> &mut dyn PartialReflect
Source§fn reflect_partial_eq(&self, value: &dyn PartialReflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn PartialReflect) -> Option<bool>
Source§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Reflect for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl Reflect for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any
. Read moreSource§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§impl Struct for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl Struct for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn field(&self, name: &str) -> Option<&dyn PartialReflect>
fn field(&self, name: &str) -> Option<&dyn PartialReflect>
name
as a &dyn PartialReflect
.Source§fn field_mut(&mut self, name: &str) -> Option<&mut dyn PartialReflect>
fn field_mut(&mut self, name: &str) -> Option<&mut dyn PartialReflect>
name
as a
&mut dyn PartialReflect
.Source§fn field_at(&self, index: usize) -> Option<&dyn PartialReflect>
fn field_at(&self, index: usize) -> Option<&dyn PartialReflect>
index
as a
&dyn PartialReflect
.Source§fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn PartialReflect>
fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn PartialReflect>
index
as a &mut dyn PartialReflect
.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§fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
None
if TypeInfo
is not available.Source§impl TypePath for Gamepad
impl TypePath for Gamepad
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Source§impl Typed for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl Typed for Gamepadwhere
Gamepad: Any + Send + Sync,
Option<u16>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
ButtonInput<GamepadButton>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Axis<GamepadInput>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Auto Trait Implementations§
impl Freeze for Gamepad
impl RefUnwindSafe for Gamepad
impl Send for Gamepad
impl Sync for Gamepad
impl Unpin for Gamepad
impl UnwindSafe for Gamepad
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<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) -> C
Source§fn register_required_components(
components: &mut Components,
storages: &mut Storages,
required_components: &mut RequiredComponents,
)
fn register_required_components( components: &mut Components, storages: &mut Storages, required_components: &mut RequiredComponents, )
Bundle
.Source§fn get_component_ids(
components: &Components,
ids: &mut impl FnMut(Option<ComponentId>),
)
fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere
C: Component,
fn get_components(self, func: &mut impl FnMut(StorageType, OwningPtr<'_>))
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info
.Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
Source§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere
S: Struct,
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more