fix(ui): the pointer in the renderer's pixels - macOS reports it in window points, so on Retina every hit landed at half the cursor's position
The old kit read Input.mouse_x() * gl_scale; ludic.ui read it raw against a layout sized in drawable pixels. A backend says how many screen pixels one pointer unit is (pointer_scale); render3d's is gl_pixel_scale(), 1 on Windows and headless. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
5df0747642
commit
40a91f39ed
3 changed files with 12 additions and 2 deletions
|
|
@ -24,6 +24,7 @@ function r3u_make() -> UiBackend {
|
|||
b.clip = fn r3u_clip
|
||||
b.unclip = fn r3u_unclip
|
||||
b.scale = fn r3u_scale
|
||||
b.pointer_scale = fn r3u_pointer_scale
|
||||
b.now = fn r3u_now
|
||||
return b
|
||||
}
|
||||
|
|
@ -40,6 +41,7 @@ export function ui_atlas(ui_st: mut UiState, prefix: string, tex: int, cols: int
|
|||
}
|
||||
function r3u_now() -> float { return float(Time.now_us() / 1000) / 1000.0 }
|
||||
function r3u_scale(ui_st: UiState) -> float { return float(gl_height()) / 1080.0 * ui_st.r3u_user }
|
||||
function r3u_pointer_scale() -> float { return float(gl_pixel_scale()) }
|
||||
function r3u_r(c: int) -> float { return float((c / 65536) % 256) / 255.0 }
|
||||
function r3u_g(c: int) -> float { return float((c / 256) % 256) / 255.0 }
|
||||
function r3u_b(c: int) -> float { return float(c % 256) / 255.0 }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue