Difference between revisions of "ACTIVE"

From Second Life Wiki
Jump to navigation Jump to search
(What was the other bit I got wrong? no_sensor? Try to imagine actually testing all of that....Phew is what I was really saying.)
Line 3: Line 3:
|type=integer
|type=integer
|value={{LSL Hex|0x2}}
|value={{LSL Hex|0x2}}
|desc=This is used by sensors to find objects that are moving or objects that contain active scripts.
|desc=This is used by sensors to find physical objects.
 
Active is intended to mean any object for which the simulator is having to spend CPU time on be it on an embedded script or the object's physical representation.
|examples=<lsl>integer type;
|examples=<lsl>integer type;



Revision as of 23:37, 21 May 2010

Description

Constant: integer ACTIVE = 0x2;

The integer constant ACTIVE has the value 0x2

This is used by sensors to find physical objects.

Related Articles

Constants

Flag Mask Description (llDetectedType()) Description (llSensor() and llSensorRepeat() mask)
AGENT_BY_LEGACY_NAME 0x1 Agents This is used to find agents by legacy name.
AGENT 0x1 Agents This is also used to find agents by legacy name, and is functionally identical to AGENT_BY_LEGACY_NAME
AGENT_BY_USERNAME 0x10 Reserved This is used to find agents by username.
ACTIVE 0x2 Physical tasks. (Physical objects & agents) Physical objects that are moving or objects containing an active script. Thus, it is using SL server resources now.
PASSIVE 0x4 Non-physical objects. Non-scripted or script is inactive and non-physical or, if physical, not moving. Thus, it is not using SL server resources now.
SCRIPTED 0x8 Objects containing any active script. Objects that has any script, which is doing anything in simulator just now.
llDetectedType() Scripted Not Scripted Agent Standing Agent Sitting
Physical Movement 10 (ACTIVE|SCRIPTED) 2 (ACTIVE) 3 (ACTIVE|AGENT) 3 (ACTIVE|AGENT)
Non-Physical 12 (PASSIVE|SCRIPTED) 4 (PASSIVE) 1 (AGENT) 5 (PASSIVE|AGENT)

Functions

•  llDetectedType
•  llSensor
•  llSensorRepeat

Articles

•  Object Type

Examples

<lsl>integer type;

integer done;

default {

   state_entry()
   {
       done = 0;
       llVolumeDetect(TRUE); // I am now very sensitive to touch. So much so I feel things before they touch me.
   }
   collision_start(integer detected)
   {
       type = llDetectedType(0);
       if(type == AGENT)// = 1
       {
           llSay(0, "This is impossible. Since to make contact either I have to be moving or the avatar does.");
       }
       else if(type == ACTIVE)// = 2
       {
           llSay(0, "I have either been struck by a physical moving object or I have struck a stationary physical object.
           In either case the object was not scripted");
       }
       else if(type == PASSIVE)// = 4
       {
           llSay(0, "If I was moving I have struck a non physical object not containing an active script.");
       }
       else if(type == SCRIPTED)// = 8
       {
           llSay(0, "I have struck an object with an active script");
       }
       else if(type == 3)// AGENT & ACTIVE
       {
           llSay(0, "I have definately made contact with an avatar. If I was stationary the avatar was moving.");
       }
       else if(type == 10)// SCRIPTED & ACTIVE
       {
           llSay(0, "I have been struck by a moving phisical object (not an avatar) containing an active script");
       }
       else if(type == 12)// SCRIPTED & PASSIVE
       {
           llSay(0, "I struck a stationary non-physical object (not an avatar) containing an active script");
           //Seems like a good time to try something a bit less confrontational.
           llSensorRepeat("", "", AGENT, 20.0, PI, 1.0); // Radar!! I'll search only for avatars untill I find one.
       }
   }
   sensor(integer detected)
   {
       if(done == 0)
       {    // Now I'll search for moving physical objects (not avatars) scripted or not.
           llSensorRepeat("", "", ACTIVE, 20.0, PI, 1.0);
           ++done;
       }
       else if(done == 1)
       {    // Now I'll search for moving physical objects scripted or not and avatars.
           llSensorRepeat("", "", 3, 20.0, PI, 1.0);
           ++done;
       }
       else if(done == 2)
       {    // Now I'll search for non physical objects (not avatars) scripted or not.
           llSensorRepeat("", "", PASSIVE, 20.0, PI, 1.0);
           ++done;
       }
       else if(done == 3)
       {    // Now I'll search for non physical objects scripted or not and avatars.
           llSensorRepeat("", "", 5, 20.0, PI, 1.0);
           ++done;
       }
       else if(done == 4)
       {    // Now I'll search for stationary non physical and physical objects (not avatars) scripted or not.
           llSensorRepeat("", "", 6, 20.0, PI, 1.0);
           ++done;
       }
       else if(done == 5)
       {    // Now I'll search for stationary non physical and physical objects scripted or not and avatars.
           llSensorRepeat("", "", 7, 20.0, PI, 1.0);
           ++done;
       }
       else if(done == 6)
       {    // Now I'll search for moving physical objects with active scripts.
           llSensorRepeat("", "", SCRIPTED, 20.0, PI, 1.0);
           ++done;
       }
       else if(done == 7)
       {    // Now I'll search for moving physical objects with active scripts. Erm... again.
           llSensorRepeat("", "", 9, 20.0, PI, 1.0);
           ++done;
       }
       else if(done == 8)
       {    // Now I'll search for stationary, scripted physical objects.
           llSensorRepeat("", "", 10, 20.0, PI, 1.0);
           ++done;
       }
       else if(done == 9)
       {    // And again just in case I missed something....*coughs*
           llSensorRepeat("", "", 11, 20.0, PI, 1.0);
           ++done;
       }
       else if(done == 10)
       {    // Even though I did this before I will now finish by searching for any scripted objects.
           llSensorRepeat("", "", 12, 20.0, PI, 1.0);
           ++done;
           llSay(0, "Phew!");
       }
   }

}</lsl>

Deep Notes

Search JIRA for related Issues

Signature

integer ACTIVE = 0x2;