ludic migrate state packages <every example program> packages/ludic.lab/example/plate.ludic 1804 vars into 126 states, 64 into lets; 23498 edits in 460 files Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 lines
864 B
Text
25 lines
864 B
Text
# hold.ludic - on-hold: every frame a control is held down - by the pointer (wherever it goes until it
|
|
# is let go), or by Enter or the pad's A on the focus - with event.dt, the seconds since the last
|
|
# frame, and event.t, how long it has been held, on the ui clock
|
|
function hd_tick(ui_st: mut UiState, root: UiNode) -> void {
|
|
var key = ui_st.fr_key_press
|
|
if ui_st.fr_press_key != "" and ui_st.in_now.down { key = ui_st.fr_press_key }
|
|
if key == "" {
|
|
ui_st.hd_key = ""
|
|
return
|
|
}
|
|
let now = an_now(ui_st)
|
|
if key != ui_st.hd_key {
|
|
ui_st.hd_key = key
|
|
ui_st.hd_t0 = now
|
|
ui_st.hd_last = now
|
|
}
|
|
let n = fr_node(root, key)
|
|
if n != null {
|
|
let v = Value.object()
|
|
Value.put(v, "dt", Value.float(now - ui_st.hd_last))
|
|
Value.put(v, "t", Value.float(now - ui_st.hd_t0))
|
|
ui_fire(ui_st, n, "hold", v)
|
|
}
|
|
ui_st.hd_last = now
|
|
}
|