Difference between revisions of "LlDetectedTouchFace"

From Second Life Wiki
Jump to navigation Jump to search
(pie, events)
Line 4: Line 4:
|func=llDetectedTouchFace
|func=llDetectedTouchFace
|return_type=integer|return_text=that is the index of the face the avatar clicked on.
|return_type=integer|return_text=that is the index of the face the avatar clicked on.
Inside [[touch_start]], returns -1 if the avatar's viewer does not support touch positions.
Inside [[Touch|touch]] and [[touch_end]], also returns -1 if the mouse has moved away from the prim.
|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.
|func_desc
|func_desc
|spec
|spec
|caveats
|caveats=
'''-1 is returned when...'''
* The avatar's viewer does not support face touch detection.
* The touch has moved off the surface of the prim.
* The triggering event is not a touch event.
|examples=
|examples=
<lsl>
<lsl>

Revision as of 16:22, 23 August 2008

Emblem-important-red.png Pre-release Documentation Warning!

This function is not available yet. This documentation was written prior to its final release so it may not match the final implementation.

Summary

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

Returns an integer that is the index of the face the avatar clicked on.

• integer index Index of detection information

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

Specification

llDetected* functions only work if called from within Detection events (collision, collision_start, collision_end, sensor, touch, touch_start, touch_end) or in functions called by Detection events. They will fail silently and return unusable values if called during other events.

Caveats

  • If index is out of bounds the script continues to execute without an error message.
  • Events that enable the llDetected* functions always return at least one detected item.
    • Detection events are not raised if there is nothing detected.[1]
    • The detection event's items detected parameter is initially never less than 1.[2]-1 is returned when...
  • The avatar's viewer does not support face touch detection.
  • The touch has moved off the surface of the prim.
  • The triggering event is not a touch event.

Examples

<lsl> default {

   touch_start(integer num_detected) {
       integer i;
       for (i = 0; i < num_detected; i++) {
           integer touchedFace = llDetectedTouchFace(i);      
           if (touchedFace == -1) {
               llWhisper(0, "Sorry, your viewer doesn't support touched faces.");
           }
           else {
               // Store away the original color
               vector oldColor = llGetColor(touchedFace);
               // Flash white and black on the touched face
               llSetColor(<1., 1., 1.>, touchedFace);
               llSleep(0.1);
               llSetColor(<0., 0., 0.>, touchedFace);
               llSleep(0.1);
               
               // Put the color back to how we found it.
               llSetColor(oldColor, touchedFace);
           } // if ...
       } // for ...
   } // touch_start

}

</lsl>

See Also

Events

•  touch_start
•  touch
•  touch_end

Functions

•  llDetectedLinkNumber

Articles

•  Detected

Deep Notes

Footnotes

  1. ^ The exception is no_sensor but it doesn't enable llDetected* functions.
  2. ^ Like all event parameters, the user can overwrite the initial value.

Signature

function integer llDetectedTouchFace( integer index );