LlSensorRepeat

From Second Life Wiki

Jump to: navigation, search

Template:Needs Translation/LSL/de Template:Needs Translation/LSL/es Template:Needs Translation/LSL/el Template:Needs Translation/LSL/he Template:Needs Translation/LSL/it Template:Needs Translation/LSL/ko Template:Needs Translation/LSL/nl Template:Needs Translation/LSL/hu Template:Needs Translation/LSL/no Template:Needs Translation/LSL/da Template:Needs Translation/LSL/sv Template:Needs Translation/LSL/tr Template:Needs Translation/LSL/pl Template:Needs Translation/LSL/pt Template:Needs Translation/LSL/ru Template:Needs Translation/LSL/uk Template:Needs Translation/LSL/zh-Hans Template:Needs Translation/LSL/zh-Hant

Contents

Summary

Buggy
Function: llSensorRepeat( string name, key id, integer type, float range, float arc, float rate );
29 Function ID
0.0 Delay
10.0 Energy

Performs a single scan for name and id with type within range meters and arc radians of forward vector and repeats every rate seconds. It does not perform the first scan until rate seconds have passed.

• string name Object or avatar name
• key id avatar or object UUID
• integer type mask (AGENT, ACTIVE, PASSIVE, and/or SCRIPTED)
• float range range 0.0 to 96.0m
• float arc the max angle between the local x-axis of the prim and detectable objects, range 0.0 to PI
• float rate How often a sensor/no_sensor will be queued.

If name, id, and/or type are empty or 0, they are ignored.
If id is an invalid key or NULL_KEY it is treated as empty.

See: llSensor for an excellent explanation of arc.

type Flag Description
AGENT 0x1 This is used to find agents only.
ACTIVE 0x2 This is used to find physical objects that are moving or objects containing an active script.
type Flag Description
PASSIVE 0x4 This is used to find physical objects that are not moving or non-physical objects containing an inactive script or a non-scripted object.
SCRIPTED 0x8 This is used to find objects containing an active script.
Float Constants Arc
PI_BY_TWO A hemisphere scan
PI A full sphere scan

Caveats

  • no_sensor will not be triggered unless the script has a sensor event ~ SVC-2409
    • An empty sensor event is enough to satisfy this condition and cause no_sensor to be triggered.
  • The repeat of the sensor event is adversely affected by time dilation (lag).
  • Sensors placed in attachments will use the direction the avatar is facing as their forward vector. In mouselook, this means that it will be wherever the avatar is looking, while out of mouselook, this means whichever way the avatar is pointing. This does not include where the avatar's head is pointing, or what animation the avatar is doing, just the direction the avatar would move in if you walked forward. This is the case, regardless of where the object is attached.
  • When a sensor event is queued, it dequeues all other sensor events in the queue.

Important Issues

~ Search JIRA for related Bugs
Bug - A problem which impairs or prevents the functions of the product. Open - The issue is open and ready for the assignee to start work on it.    llSensorRepeat not triggering no_sensor unless a sensor event handler is present
Bug - A problem which impairs or prevents the functions of the product. Open - The issue is open and ready for the assignee to start work on it.    llSensorRepeat randomly returns unexpected results if arc>PI

Examples

// Written by Steamy Latte.
// Scans every 30 seconds for visitors within 10 meters.
// Reports new visitors to object owner when she is in range.
 
 
string AllAgents;
string OwnerName;
 
default
{
    state_entry()
    {
        // arc=PI is a sphere, you could look more narrowly in the direction object is facing with PI/2, PI/4 etc.
        // don't repeat this too often to avoid lag.
        llSensorRepeat("", "", AGENT, 10.0, PI, 30.0);
    }
    sensor(integer num_detected)
    {
        string thisAgent = "";
        integer agentNum;
        for (agentNum=0; agentNum<num_detected; agentNum++)
        {
            key thisKey = llDetectedKey(agentNum);
            string thisAgent = llDetectedName(agentNum);
            if (thisKey == llGetOwner())
            {
                if (AllAgents != "")
                {
                    llOwnerSay("We've had the following visitors:" + AllAgents);
                    AllAgents = "";
                }
            }
            else if (llSubStringIndex(AllAgents+"\n", "\n"+thisAgent+"\n") < 0)
            {
                AllAgents = AllAgents + "\n" + thisAgent;
            }
        }
    }
}

Notes

Lag tip: Consider llVolumeDetect as a less resource intensive alternative to llSensorRepeat in many cases.

See Also

Events

•  sensor Triggered when a sensor detects something
•  no_sensor Triggered when a sensor detects nothing

Functions

•  llSensor Runs a sensor once
•  llSensorRemove Stops the llSensorRepeat timer

Deep Notes

Issues

~ Search JIRA for related Issues
Bug - A problem which impairs or prevents the functions of the product. Open - The issue is open and ready for the assignee to start work on it.    llSensorRepeat not triggering no_sensor unless a sensor event handler is present
Bug - A problem which impairs or prevents the functions of the product. Open - The issue is open and ready for the assignee to start work on it.    llSensorRepeat randomly returns unexpected results if arc>PI
This article wasn't helpful for you? Maybe the related article at the LSL Wiki is able to bring enlightenment.
Personal tools
In other languages