Difference between revisions of "LlDetectedTouchFace"

From Second Life Wiki
Jump to navigation Jump to search
(-1 for older viewers)
(little example)
Line 9: Line 9:
|spec
|spec
|caveats
|caveats
|examples
|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>
|helpers
|helpers
|related
|related

Revision as of 14:38, 6 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, or -1 if the avatar's viewer does not support this feature.

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