LlDetectedTouchST
De DigiWiki.
Version du 25 juin 2012 à 23:28 par Djphil (discuter | contributions)
default { touch_start(integer num_detected) { integer i = 0; for(; i < num_detected; ++i ) { vector touchedpos = llDetectedTouchST(i); if (llDetectedTouchFace(i) == -1) { llWhisper(0, "Sorry, your viewer doesn't support touched faces."); } else if ( touchedpos == TOUCH_INVALID_TEXCOORD ) { llWhisper(0, "Sorry, the surface touch position could not be determined."); } else { llWhisper(0, (string) touchedpos); } } // while ... } // touch_start }
vector touchedLoc; default { //Draws a cross-hair at the detected Location on the detected face. touch(integer num_detected) { integer i; for (i = 0; i < num_detected; i++) { touchedLoc = llDetectedTouchST(i); //What location has been touched? llSetPrimitiveParams([PRIM_TEXTURE, llDetectedTouchFace(i), "5ac7995c-4c24-8b60-ae61-6a837619dc75", <1.0,1.0,0.0>, touchedLoc, 180*DEG_TO_RAD]); //Set the Texture Location at the touched location } } }
// Sets a grid of WIDTH by HEIGHT and returns a unique number. // The cases of the grid are numbered line by line, left to right, // starting from the bottom. integer WIDTH = 12; integer HEIGHT = 12; // With a grid of 12x12 (144 cases), you get a number from 0 to 143. default { touch_start(integer total_number) { vector st = llDetectedTouchST(0); integer x = llFloor(st.x * WIDTH); integer y = llFloor(st.y * HEIGHT); integer button = (y * WIDTH) + x; llOwnerSay("(" + (string)x + "," + (string)y + ") --> " + (string)button); } }