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