= 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); }