llDetectedTouchFace

From Second Life Wiki
Revision as of 15:30, 23 August 2008 by Viktoria Dovgal (talk | contribs) (pie, events)
Jump to navigation Jump to search
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.

Inside touch_start, returns -1 if the avatar's viewer does not support touch positions.

Inside touch and touch_end, also returns -1 if the mouse has moved away from the prim.

• 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]

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 );