Skip to content

Conversation

alice-i-cecile
Copy link
Member

Objective

  • The Gamepad type is a tiny value-containing type that implements Copy.
  • By convention, references to Copy types should be avoided, as they can introduce overhead and muddle the semantics of what's going on.
  • This allows us to reduce boilerplate reference manipulation and lifetimes in user facing code.

Solution

  • Make assorted methods on Gamepads take / return a raw Gamepad, rather than &Gamepad.

Migration Guide

  • Gamepads::iter now returns an iterator of Gamepad. rather than an iterator of &Gamepad.
  • Gamepads::contains now accepts a Gamepad, rather than a &Gamepad.

@alice-i-cecile alice-i-cecile added A-Input Player input via keyboard, mouse, gamepad, and more C-Code-Quality A section of code that is hard to understand or change C-Usability A targeted quality-of-life change that makes Bevy easier to use labels Jul 12, 2022
@Nilirad Nilirad added the M-Needs-Migration-Guide A breaking change to Bevy's public API that needs to be noted in a migration guide label Jul 12, 2022
@Nilirad
Copy link
Contributor

Nilirad commented Jul 12, 2022

Labeled as breaking change since it changes function signatures.

Copy link
Contributor

@hymm hymm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Co-authored-by: ira <JustTheCoolDude@gmail.com>
@alice-i-cecile
Copy link
Member Author

bors r+

bors bot pushed a commit that referenced this pull request Sep 3, 2022
… `Gamepads` API (#5296)

# Objective

- The `Gamepad` type is a tiny value-containing type that implements `Copy`.
- By convention, references to `Copy` types should be avoided, as they can introduce overhead and muddle the semantics of what's going on.
- This allows us to reduce boilerplate reference manipulation and lifetimes in user facing code.

## Solution

- Make assorted methods on `Gamepads` take / return a raw `Gamepad`, rather than `&Gamepad`.

## Migration Guide

- `Gamepads::iter` now returns an iterator of `Gamepad`. rather than an iterator of `&Gamepad`.
- `Gamepads::contains` now accepts a `Gamepad`, rather than a `&Gamepad`.
@bors
Copy link
Contributor

bors bot commented Sep 3, 2022

Build failed:

Co-authored-by: TimJentzsch <tim-jentzsch@gmx.de>
@alice-i-cecile
Copy link
Member Author

bors retry

bors bot pushed a commit that referenced this pull request Sep 3, 2022
… `Gamepads` API (#5296)

# Objective

- The `Gamepad` type is a tiny value-containing type that implements `Copy`.
- By convention, references to `Copy` types should be avoided, as they can introduce overhead and muddle the semantics of what's going on.
- This allows us to reduce boilerplate reference manipulation and lifetimes in user facing code.

## Solution

- Make assorted methods on `Gamepads` take / return a raw `Gamepad`, rather than `&Gamepad`.

## Migration Guide

- `Gamepads::iter` now returns an iterator of `Gamepad`. rather than an iterator of `&Gamepad`.
- `Gamepads::contains` now accepts a `Gamepad`, rather than a `&Gamepad`.
@bors
Copy link
Contributor

bors bot commented Sep 3, 2022

@bors bors bot changed the title Gamepad type is Copy; do not require / return references to it in Gamepads API [Merged by Bors] - Gamepad type is Copy; do not require / return references to it in Gamepads API Sep 3, 2022
@bors bors bot closed this Sep 3, 2022
james7132 pushed a commit to james7132/bevy that referenced this pull request Oct 28, 2022
… `Gamepads` API (bevyengine#5296)

# Objective

- The `Gamepad` type is a tiny value-containing type that implements `Copy`.
- By convention, references to `Copy` types should be avoided, as they can introduce overhead and muddle the semantics of what's going on.
- This allows us to reduce boilerplate reference manipulation and lifetimes in user facing code.

## Solution

- Make assorted methods on `Gamepads` take / return a raw `Gamepad`, rather than `&Gamepad`.

## Migration Guide

- `Gamepads::iter` now returns an iterator of `Gamepad`. rather than an iterator of `&Gamepad`.
- `Gamepads::contains` now accepts a `Gamepad`, rather than a `&Gamepad`.
ItsDoot pushed a commit to ItsDoot/bevy that referenced this pull request Feb 1, 2023
… `Gamepads` API (bevyengine#5296)

# Objective

- The `Gamepad` type is a tiny value-containing type that implements `Copy`.
- By convention, references to `Copy` types should be avoided, as they can introduce overhead and muddle the semantics of what's going on.
- This allows us to reduce boilerplate reference manipulation and lifetimes in user facing code.

## Solution

- Make assorted methods on `Gamepads` take / return a raw `Gamepad`, rather than `&Gamepad`.

## Migration Guide

- `Gamepads::iter` now returns an iterator of `Gamepad`. rather than an iterator of `&Gamepad`.
- `Gamepads::contains` now accepts a `Gamepad`, rather than a `&Gamepad`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Input Player input via keyboard, mouse, gamepad, and more C-Code-Quality A section of code that is hard to understand or change C-Usability A targeted quality-of-life change that makes Bevy easier to use M-Needs-Migration-Guide A breaking change to Bevy's public API that needs to be noted in a migration guide
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants