pub struct GamepadEventRaw {
    pub gamepad: Gamepad,
    pub event_type: GamepadEventType,
}
Expand description

A raw event of a Gamepad.

This event is the translated version of the EventType from the GilRs crate. It is available to the end user and can be used for game logic.

Differences

The difference between the EventType from the GilRs crate and the GamepadEventRaw is that the latter has less events, because the button pressing logic is handled through the generic Input<T> instead of through events.

The difference between the GamepadEventRaw and the GamepadEvent can be seen in the documentation of the GamepadEvent.

Gamepad input mocking

The following example showcases how to mock gamepad input by manually sending GamepadEventRaws.

#[derive(Resource)]
struct MyResource(bool);

// This system sets the bool inside `MyResource` to `true` if the `South` button of the first gamepad is pressed.
fn change_resource_on_gamepad_button_press(
    mut my_resource: ResMut<MyResource>,
    gamepads: Res<Gamepads>,
    button_inputs: ResMut<Input<GamepadButton>>,
) {
    let gamepad = gamepads.iter().next().unwrap();
    let gamepad_button = GamepadButton::new(gamepad, GamepadButtonType::South);

    my_resource.0 = button_inputs.pressed(gamepad_button);
}

// Create our app.
let mut app = App::new();

// Add the input plugin and the system/resource we want to test.
app.add_plugin(InputPlugin)
    .insert_resource(MyResource(false))
    .add_system(change_resource_on_gamepad_button_press);

// Define our dummy gamepad input data.
let gamepad = Gamepad::new(0);
let button_type = GamepadButtonType::South;

// Send the gamepad connected event to mark our gamepad as connected.
// This updates the `Gamepads` resource accordingly.
let info = GamepadInfo { name: "Mock Gamepad".into() };
app.world.send_event(GamepadEventRaw::new(gamepad, GamepadEventType::Connected(info)));

// Send the gamepad input event to mark the `South` gamepad button as pressed.
// This updates the `Input<GamepadButton>` resource accordingly.
app.world.send_event(GamepadEventRaw::new(
    gamepad,
    GamepadEventType::ButtonChanged(button_type, 1.0)
));

// Advance the execution of the schedule by a single cycle.
app.update();

// At this point you can check if your game logic corresponded correctly to the gamepad input.
// In this example we are checking if the bool in `MyResource` was updated from `false` to `true`.
assert!(app.world.resource::<MyResource>().0);

// Send the gamepad input event to mark the `South` gamepad button as released.
// This updates the `Input<GamepadButton>` resource accordingly.
app.world.send_event(GamepadEventRaw::new(
    gamepad,
    GamepadEventType::ButtonChanged(button_type, 0.0)
));

// Advance the execution of the schedule by another cycle.
app.update();

// Check if the bool in `MyResource` was updated from `true` to `false`.
assert!(!app.world.resource::<MyResource>().0);

Fields

gamepad: Gamepad

The gamepad this event corresponds to.

event_type: GamepadEventType

The type of the event.

Implementations

Creates a new GamepadEventRaw.

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Constructs a concrete instance of Self from a reflected value.
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more
Returns the type name of the underlying type.
Returns the TypeInfo of the underlying type. Read more
Returns the value as a Box<dyn Any>.
Returns the value as a &dyn Any.
Returns the value as a &mut dyn Any.
Casts this type to a boxed reflected value.
Casts this type to a reflected value.
Casts this type to a mutable reflected value.
Clones the value as a Reflect trait object. Read more
Performs a type-checked assignment of a reflected value to this value. Read more
Applies a reflected value to this value. Read more
Returns an enumeration of “kinds” of type. Read more
Returns a mutable enumeration of “kinds” of type. Read more
Returns an owned enumeration of “kinds” of type. Read more
Returns a “partial equality” comparison result. Read more
Debug formatter for the value. Read more
Returns a hash of the value (which includes the type). Read more
Returns a serializable version of the value. Read more
Returns a reference to the value of the field named name as a &dyn Reflect. Read more
Returns a mutable reference to the value of the field named name as a &mut dyn Reflect. Read more
Returns a reference to the value of the field with index index as a &dyn Reflect. Read more
Returns a mutable reference to the value of the field with index index as a &mut dyn Reflect. Read more
Returns the name of the field with index index.
Returns the number of fields in the struct.
Returns an iterator over the values of the reflectable fields for this struct.
Clones the struct into a DynamicStruct.
Returns the compile-time info for the underlying type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Convert 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. Read more
Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more
Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more
Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more

Returns the argument unchanged.

Returns a reference to the value of the field named name, downcast to T. Read more
Returns a mutable reference to the value of the field named name, downcast to T. Read more
Returns a reference to the value specified by path. Read more
Returns a mutable reference to the value specified by path. Read more
Returns a statically typed reference to the value specified by path.
Returns a statically typed mutable reference to the value specified by path. Read more
Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more