ludic/examples/library
Orkuncakilkaya 28e8769a8b fix(input): mouse_dx/dy report no motion on the first frame or across a cursor-mode change
The delta was this frame's position minus the last, and the last started at 0,0, so the
first frame reported the cursor's whole distance from the corner as motion. A cursor-mode
change did the same, switching between a locked cursor's virtual reticle and the real
cursor. Maroon Lake's camera adds mouse_dy to its pitch and came up pointing at the ground.

examples/library/input_mouse_rebase.ludic covers both cases, plus ordinary motion and
re-setting the mode already in force.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 15:35:26 +03:00
..
anim.ludic feat(stdlib): add Anim.* + Tween.* — deterministic 2D animation & tweening (#5) 2026-08-31 13:05:06 +03:00
anim_ecs.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
anim_sugar.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
arena.ludic chore(repo): DX cleanup — categorise examples, text-diffable golden, build/ output (#27 #28 #30) 2026-08-30 18:54:21 +03:00
atlas.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
audio.ludic feat: per-voice audio, outlines for what is not an actor, and a coast 2026-09-11 15:25:46 +03:00
bignum.ludic feat(types): BigInt + Decimal exact economy numbers (#52) 2026-08-31 18:45:14 +03:00
camera_zoom.ludic feat(camera): #78 deterministic Camera.zoom (Q16.16 render-time zoom) 2026-09-02 06:55:37 +03:00
clear_color.ludic feat(render): #86 @ClearColor — Render phase auto-clears + auto-presents 2026-09-02 07:10:44 +03:00
combat.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
combat_kit.ludic feat(engine): #90 atlas-aware Sprite component, #91 become from listeners, 0.3.x ergonomics batch 2026-09-04 01:36:08 +03:00
component_access.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
containers.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
core_components.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
coverage.ludic refactor(cli)!: split the contributor tool out of the ludic CLI 2026-09-05 23:15:12 +03:00
crypto.ludic feat(stdlib): finish Crypto (CSPRNG + base64) and add Uuid.* library (#19 #16) 2026-08-30 21:40:51 +03:00
cursor_capture.ludic feat(input): #89 cursor capture — Input.cursor_mode (hide/lock/confine) 2026-09-02 08:06:34 +03:00
errors.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
fs.ludic feat(stdlib): add Fs.* / Path.* / Mime.* — filesystem, paths, content types (#10) 2026-08-30 22:43:50 +03:00
gameplay_foundation.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
grid.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
http.ludic feat(http): Http.* poll-based HTTP/HTTPS client over a native NSURLConnection backend (#6) 2026-08-31 18:10:53 +03:00
input_actions.ludic feat(input): action maps + deterministic record/replay (#7) 2026-08-31 16:03:56 +03:00
input_arrows.ludic fix(input): Key.Up/Down/Left/Right are the held set's 128-131 2026-09-13 03:00:29 +03:00
input_auto.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
input_device.ludic feat(input): raw device layer — multi-key held state, analog, mouse, gamepad, touch, full-state replay (#50) 2026-08-31 17:14:24 +03:00
input_edge.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
input_manager.ludic feat(input): #83 Input Manager + auto-commit the device layer in the frame loop 2026-09-02 07:04:10 +03:00
input_mouse_rebase.ludic fix(input): mouse_dx/dy report no motion on the first frame or across a cursor-mode change 2026-09-14 15:35:26 +03:00
input_movement.ludic feat(input,ecs): #79 Input.axis_i directional int + #84 world bounds 2026-09-02 07:44:41 +03:00
jobs.ludic feat(stdlib): Jobs, Promises & opt-in Sync concurrency (#14) 2026-09-01 03:32:31 +03:00
light_ecs.ludic feat(ecs): Light2D/Occluder/Ambient as auto-consumed components (#47) 2026-08-31 15:49:50 +03:00
light_tiers.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
lighting.ludic feat(rendering): add Light.* — deterministic 2D light accumulation with hard shadows (#4) 2026-08-31 14:07:19 +03:00
logging.ludic feat(stdlib): add Log.* — levelled, structured logging (#15) 2026-08-30 21:57:22 +03:00
managers.ludic feat(engine): #90 atlas-aware Sprite component, #91 become from listeners, 0.3.x ergonomics batch 2026-09-04 01:36:08 +03:00
namespace_block.ludic feat(lang): #76 namespace block form with export/internal visibility 2026-09-02 08:14:54 +03:00
noise.ludic feat(stdlib): add Noise.* — deterministic fixed-point procedural noise (#3) 2026-08-30 21:50:50 +03:00
numeric.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
optionresult.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
os.ludic feat(compiler): list literals, typed compound assignment, file:line diagnostics 2026-09-05 01:12:16 +03:00
physics.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
physics_tiles.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
pool.ludic feat(ecs): #80 entity-pool stats (Pool.live/free/reserved/capacity) 2026-09-02 08:23:58 +03:00
prefabs.ludic feat(engine): #90 atlas-aware Sprite component, #91 become from listeners, 0.3.x ergonomics batch 2026-09-04 01:36:08 +03:00
preload.ludic feat(assets): #82 incremental asset preloading + loading-scene pattern 2026-09-02 08:19:19 +03:00
query.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
recover.ludic feat(errors): recoverable failures as values — try/else over ok/err results (#46) 2026-08-31 15:04:14 +03:00
reflect.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
regex.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
render.ludic feat(rendering): add Screen.camera/clip/blend_mode/oval + Camera.* + Screen.pixel (#23) 2026-08-31 13:43:01 +03:00
scene_menus.ludic feat(engine): #90 atlas-aware Sprite component, #91 become from listeners, 0.3.x ergonomics batch 2026-09-04 01:36:08 +03:00
serialize.ludic feat(reflect): generic value tree + Reflect.serialize/apply + JSON bridge (#44) 2026-08-31 15:19:21 +03:00
sprite_atlas.ludic feat(engine): #90 atlas-aware Sprite component, #91 become from listeners, 0.3.x ergonomics batch 2026-09-04 01:36:08 +03:00
sprite_render.ludic feat(render): #85 engine sprite-render system + deprecate bare draw_sprite 2026-09-02 07:20:13 +03:00
testing.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
tiled_p0.ludic feat(stdlib): Tiled P0 — XML reader + base64 decode + gzip framing (#67) 2026-09-01 14:04:49 +03:00
tiled_p1.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
tiled_p2.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
tiled_p3.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
tiled_p4.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
tiled_p05.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
tiled_p5.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
tiled_p6.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00
unicode.ludic feat(stdlib): add Unicode.* — UTF-8 code points, graphemes, case mapping (#13) 2026-08-30 22:29:00 +03:00
uuid.ludic feat(stdlib): finish Crypto (CSPRNG + base64) and add Uuid.* library (#19 #16) 2026-08-30 21:40:51 +03:00
world_bounds.ludic refactor(runtime,packages,examples): named constants, package enums, idiom sweep 2026-09-05 01:12:26 +03:00