Have 2 different things happen for regular Touch and Long Touch, (hold for 2 seconds.)
If avatar Touches like normal they get TOUCH 1
If avatar Touches and holds for 2+ seconds they get TOUCH 2
float mintime = 2.0; //how many seconds to get long touch option
float t;
integer donenow = FALSE;
default
{
on_rez(integer start_param)
{
llResetScript();
}
state_entry()
{
donenow = FALSE;
}
touch_start(integer num_detected)
{
t = llGetTime();
}
touch(integer num_detected)
{
float tempsecs = llGetTime() - t;
if ((tempsecs >= mintime) && (donenow == FALSE))
{
donenow = TRUE;
llSay(0, "Long Touch detected, you may release Touch now.");
}
}
touch_end(integer num_detected)
{
float secs = llGetTime() - t;
//llOwnerSay((string)secs + " seconds between touch_start and touch_end"); //debug
if (secs >= mintime) //greater than or equal
{
llSay(0, "Touch 2"); //debug
}
else //regular touch
{
llSay(0, "Touch 1"); //debug
}
donenow = FALSE;
}
}
|