User:Trinity Coulter/Touch and hold example script

From Second Life Wiki
Jump to navigation Jump to search

Example script showing click and hold to take action instead of simple clicking.

<lsl> integer ignore = FALSE; float touch_hold_delay = 1.0; integer touch_held = FALSE;

default {

   state_entry()
   {
       llSay(0, "Hello, Avatar!");
   }
   touch_start(integer total_number)
   {
       llSay(0, "Touch_start.");
       llSetTimerEvent(touch_hold_delay);
   }
   
   touch(integer num_detected)
   {
       if (ignore == FALSE)
       {
           llSay(0, "Touching.");
       }
       
       if (touch_held == TRUE)
       {
           // Do something based on this condition
           // in the touch event or touch_end event
           // depending on needs.
       }
   }
   
   touch_end(integer total_number)
   {
       llSay(0, "Touch_end.");
       llSetTimerEvent(0.0);
       ignore = FALSE;
       
       if (touch_held == TRUE)
       {
           // Do something based on this condition
           // in the touch event or touch_end event
           // depending on needs.
       }
   }
   
   timer()
   {
       llSay(0,"Timer: touch held for " + (string)touch_hold_delay + " seconds.");
       touch_held = TRUE;
       ignore = TRUE;
       llSetTimerEvent(0.0);
   }

} </lsl>