Difference between revisions of "LlDetectedTouchST"

From Second Life Wiki
Jump to navigation Jump to search
(Added an example.)
m
Line 4: Line 4:
|return_type=vector|return_text=that is the surface coordinates for where the prim was touched. The x & y vector positions contain the horizontal ('''s''') & vertical ('''t''') face coordinates respectively ('''{{NoWrap|{{LSL_VR|s|t|0.0}}}}'''). Each component is in the interval [0.0, 1.0].
|return_type=vector|return_text=that is the surface coordinates for where the prim was touched. The x & y vector positions contain the horizontal ('''s''') & vertical ('''t''') face coordinates respectively ('''{{NoWrap|{{LSL_VR|s|t|0.0}}}}'''). Each component is in the interval [0.0, 1.0].


{{NoWrap|{{LSL_VR|-1.0|-1.0|0.0}}}} is returned when the surface coordinates cannot be determined. See [[#Caveats|Caveats]] for further details.
{{LSL Const|TOUCH_INVALID_TEXCOORD|vector|{{LSL_VR|-1.0|-1.0|0.0}}}} is returned when the surface coordinates cannot be determined. See [[#Caveats|Caveats]] for further details.
|p1_type=integer|p1_name=index
|p1_type=integer|p1_name=index
|func_footnote=For the {{LSLGC|Touch|touch}} category of events only.
|func_footnote=For the {{LSLGC|Touch|touch}} category of events only.
Line 10: Line 10:
|spec
|spec
|caveats=
|caveats=
'''{{NoWrap|{{LSL_VR|-1.0|-1.0|0.0}}}} is returned when...'''
'''{{LSL Const|TOUCH_INVALID_TEXCOORD|vector|{{LSL_VR|-1.0|-1.0|0.0}}}} is returned when...'''
* The avatar's viewer does not support face touch detection.
* The avatar's viewer does not support face touch detection.
** To check if face touch detection is supported check the return of [[llDetectedTouchFace]].
** To check if face touch detection is supported check the return of [[llDetectedTouchFace]].
Line 27: Line 27:
                 llWhisper(0, "Sorry, your viewer doesn't support touched faces.");
                 llWhisper(0, "Sorry, your viewer doesn't support touched faces.");
             }
             }
             else if ( touchedpos == <-1.0, -1.0, 0.0> ) {
             else if ( touchedpos == TOUCH_INVALID_TEXCOORD ) {
                 llWhisper(0, "Sorry, the surface touch position could not be determined.");
                 llWhisper(0, "Sorry, the surface touch position could not be determined.");
             }
             }

Revision as of 11:11, 12 October 2008

Summary

Function: vector llDetectedTouchST( integer index );
0.0 Forced Delay
10.0 Energy

Returns a vector that is the surface coordinates for where the prim was touched. The x & y vector positions contain the horizontal (s) & vertical (t) face coordinates respectively (<s, t, 0.0>). Each component is in the interval [0.0, 1.0].

TOUCH_INVALID_TEXCOORD is returned when the surface coordinates cannot be determined. See Caveats for further details.

• integer index Index of detection information

index does not support negative indexes. For the touch category of events only.

Caveats

  • If index is out of bounds the script continues to execute without an error message.TOUCH_INVALID_TEXCOORD is returned when...
  • The avatar's viewer does not support face touch detection.
  • The touch has moved off the surface of the prim.
  • The touch happened too close to the edge of the face to determine a location.
  • The triggering event is not a touch event.

Examples

<lsl>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

}</lsl> <lsl>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
       }
   }

}

</lsl>

See Also

Deep Notes

History

Introduced in Viewer SVN:870 r92872 Branch:Release Wednesday, 23 July 2008, Supported by Beta Server 1.24.0.93754 (Wenesday 6th August 2008), and viewer binary 1.20.15 (93532).

Signature

function vector llDetectedTouchST( integer index );