llDetectedGrab
function
Function syntax
vector llDetectedGrab(integer number// Index of the detection information.
);- Returns
vector- Energy
- 10
Returns <0.0, 0.0, 0.0> if number is out of range or if called from an event other than the touch event.
Returns a vector that is the grab offset of the user touching the object; only works in the touch event.
vector result = llDetectedGrab(0);Specification
Section titled “Specification”- If the object is physical, grabs are detected if the avatar has permission to move the object and the object is not locked.
- If the object is nonphysical, grabs from all avatars are detected.
Caveats
Section titled “Caveats”- When called in HUD attachments, values returned are affected by the wearer’s position and rotation.
Examples
Section titled “Examples”Example 1
default{ state_entry() { llSetStatus(PRIM_PHYSICS,TRUE);//This allows the object to be "grabbed" and dragged } touch(integer num_detected) { llSay(0,(string)llDetectedGrab(0));//Be prepared for a great amount of chatted info. //The faster you move the mouse while grabbing the object the greater the offset becomes. //This is not due to the speed but the reaction time of the turn around of the physical prim, //thus an offset (distance from grab to prim center) is created and measured by this function. }}Example 2
/******
Simple llDetectedGrab illustration, rez a prim and add this script.The prim will become a cone that follows mouse grabs.
20 collapsed lines
Click and hold the mouse button down on the object, then: - Drag left and right to move parallel to the camera focal plane. - Drag up and down to move to and from the camera. - Hold down Ctrl, then drag up and down to move vertically.
******/
default{ state_entry() { llMinEventDelay(0.25); llSetStatus(STATUS_PHYSICS, FALSE); // make the object static for simplicity llSetPrimitiveParams([ PRIM_SIZE, <0.5, 0.5, 0.5>, PRIM_TYPE, PRIM_TYPE_CYLINDER, PRIM_HOLE_DEFAULT, <0.0, 1.0, 0.0>, 0.0, ZERO_VECTOR, ZERO_VECTOR, ZERO_VECTOR ]); // a cone that can follow the mouse pointer }
touch(integer total_number) { llLookAt(llGetPos() + llDetectedGrab(0), 1.0, 1.0); }}llDetectedGrab() is not blocked by STATUS_BLOCK_GRAB or STATUS_BLOCK_GRAB_OBJECT.
See also
Section titled “See also”Functions
Section titled “Functions”Events
Section titled “Events”Articles
Section titled “Articles”Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.