Difference between revisions of "LlPassTouches"

From Second Life Wiki
Jump to navigation Jump to search
(SVC-5923 fix behavior change in server 1.40.2)
(minor wording change to my previous edit)
Line 5: Line 5:
|func_footnote=The default is [[TRUE]] if there is no script to handle the touch events in the prim.
|func_footnote=The default is [[TRUE]] if there is no script to handle the touch events in the prim.
* '''As of server version 1.40.2, this function now has 3 inputs for operation: 1,2, anything else behaves like 0.''' See {{Jira|SVC-5923}}
* '''As of server version 1.40.2, this function now has 3 inputs for operation: 1,2, anything else behaves like 0.''' See {{Jira|SVC-5923}}
* An input of 2 will not pass touches to root even without a touch script in the child prim.
* An input of 2 will not pass touches to root even with no touch script in the child prim.
|func_desc=Sets pass-touches [[prim]] attribute.
|func_desc=Sets pass-touches [[prim]] attribute.
|return_text
|return_text

Revision as of 23:34, 8 July 2015

Summary

Function: llPassTouches( integer pass );

Sets pass-touches prim attribute.

• integer pass If TRUE touches are passed from children on to the root, if FALSE touches are not passed on to the root

The default is TRUE if there is no script to handle the touch events in the prim.

  • As of server version 1.40.2, this function now has 3 inputs for operation: 1,2, anything else behaves like 0. See SVC-5923
  • An input of 2 will not pass touches to root even with no touch script in the child prim.

Caveats

  • This has no effect when called on the root prim.
  • Touches are always passed to the parent when there is no touch event script in the child, even if this is set (TRUE or FALSE) within another event in a child's script.
    • If you want to block touches from a child , you must add a script with a touch event in the child. This creates a default no passes.
All Issues ~ Search JIRA for related Bugs

Examples

Make a two prim LINK_SET (Object). Name the root "Parent" and the child "Child". To the root add this script -
integer told;

default
{
    state_entry()
    {
        told = FALSE;
    }
    touch_start(integer total_number)
    {
        if(!(llDetectedLinkNumber(0) == llGetLinkNumber()))// We can use a condition like this to filter from which prims touches are triggered.
        {
            llSay(0, "My child tells me you touched it. Abuse report pending.");// This will only be spoken if the child is touched twice.
            told = TRUE;
        }
        else
        {
            if(!told)
                llSay(0, "You can touch me all you like");// The unaware Parent leads you on.
            else
                llSay(0, "If I had my way you would have your hands cut off!");// Not any more.
        }
    }
}

And to the child add this script -

integer once_is_too_often;
default
{
    state_entry()
    {
        llPassTouches(FALSE);// Innocent child doesn't know to say something the first time.
        once_is_too_often = FALSE;
    }
    touch_start(integer total_number)
    {
        if(llDetectedLinkNumber(0) == llGetLinkNumber())// Again we check who is being touched.
        {
            if(!once_is_too_often)
            {
                llSay(0, "If you touch me again I'm telling.");
                llPassTouches(TRUE); // But if a second time, it will tell.
                once_is_too_often = TRUE;// And then fall silent.
            }
        }
    }
}

See Also

Events

•  touch_start
•  touch
•  touch_end

Functions

•  llPassCollisions

Deep Notes

Search JIRA for related Issues

Signature

function void llPassTouches( integer pass );