Improve InputView haptics #54
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes
This PR changes the way that haptics work when using an
InputView. The ultimate goal is to make clearer when inputs are being released and maxed out, and the thumbstick haptics have accordingly been redone entirely to better mimic the sensations of a real eight-pointed N64, GCN, or Wii joystick.Button haptics changes
lighthaptic is played (which is softer than the button press haptic,medium). This makes it easier to tell when buttons have been lifted, which can be particularly helpful in some racing games where accelerate and brake are pressed and released repeatedly.Thumbstick haptics changes
rigidhaptic is played and the user knows that they cannot go any further; also made it so that if the stick moves along the edge, arigidhaptic is played for each new octant that is entered. Octants are defined such that octant0is (0, π/4), octant1is (π/4, π/2), and so on (the inner deadzone counts asnil). This was done to mimic the feel of the tapping of the stick and the hard plastic enclosure.softhaptic is played for each new octant that is entered. This was done to mimic the soft tactile sensation when moving a stick along the interior, but in eight slices rather than the previous four (which matches the behavior of a real stick).softhaptic play when the stick is removed from or reintroduced into the inner dead zone. The exception to this is when the stick is released from outside of the inner deadzone and snaps back to the origin, alighthaptic is played. Previously, this release was amediumhaptic, which could be confused with themediumhaptic used for a button on press.0.1extending upward and sideways rather than a circle with radius0.1; this is inconsistent with some other emulators and leads to unintended directional snapping and incorrect haptic behavior when moving up and away from the center or moving from one quadrant to another (these deadzones would often cause the haptics to fail to trigger at all).Testing