LlDetectedTouchST

De DigiWiki.

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);
    }
}
Outils personnels
  • Cette page a été consultée 514 fois.
donate
Google Ads