= HUD Button Handling =
Handle button presses on the HUD by detecting the link, face and position, as well as if it was a long-click (> 2 seconds).
Do button handling outside of the state handlers
button(integer link, integer face, vector p, integer long) {
string name = llGetLinkName(link);
log("button() name: " + name + " face: " + (string)face + " pos: " + (string)p);
if (name == "button") {
if (face == 4) {
// handle 5x2 buttons
integer bx = (integer)(p.x * 5);
integer by = (integer)(p.y * 2);
if (bx == 0 && by == 0) {
// bottom left
}
else if (bx == 0 && by == 1) {
// top left
}
}
}
// RESET button
if (name == "reset") {
reset();
}
}
Simple state handler:
touch_start(integer total_number) {
integer link = llDetectedLinkNumber(0);
integer face = llDetectedTouchFace(0);
vector pos = llDetectedTouchST(0);
button(llGetLinkName(link), face, pos);
}
State handler with long-click:
touch_start(integer num) {
llResetTime();
}
touch_end(integer num) {
integer long = (llGetTime() > 2.0);
integer link = llDetectedLinkNumber(0);
integer face = llDetectedTouchFace(0);
vector pos = llDetectedTouchST(0);
button(link, face, pos, long);
}