Skip to content

Conversation

@killerdevildog
Copy link

The keyboard.press, keyboard.release, and other single-frame input objects were only being reset if the user's script contained an update() function. This created an undocumented dependency and caused inputs to fail in projects without a game loop.

Before this fix:

  • keyboard.press.SPACE would only work once, then stop responding
  • Projects needed a dummy 'update = 0' to make inputs work
  • Input reset logic was tied to update() function execution

After this fix:

  • Input state reset now occurs on every frame in tick()
  • keyboard.press works correctly regardless of update() function
  • No more need for dummy update functions as workarounds

This commit moves the input state reset logic (@updateControls) from the conditional update() block to the start of every frame in the tick() function, ensuring predictable and correct input behavior for all project structures.

Fixes #229

The keyboard.press, keyboard.release, and other single-frame
input objects were only being reset if the user's script contained
an update() function. This created an undocumented dependency and
caused inputs to fail in projects without a game loop.

Before this fix:
- keyboard.press.SPACE would only work once, then stop responding
- Projects needed a dummy 'update = 0' to make inputs work
- Input reset logic was tied to update() function execution

After this fix:
- Input state reset now occurs on every frame in tick()
- keyboard.press works correctly regardless of update() function
- No more need for dummy update functions as workarounds

This commit moves the input state reset logic (@updateControls)
from the conditional update() block to the start of every frame
in the tick() function, ensuring predictable and correct input
behavior for all project structures.

Fixes pmgl#229
The runner.js file is generated from runner.coffee and should not be
tracked in version control. This follows best practices:

- Only track source files (runner.coffee)
- Let build process generate compiled files (runner.js)
- Reduces repository size and merge conflicts
- Compiled file can be generated with: npx coffee -c runner.coffee

The fix for Issue pmgl#229 remains intact in the CoffeeScript source.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[microscript] keyboard.press not updated unless update is defined

1 participant