Collision start: Difference between revisions

From Second Life Wiki
Jump to navigation Jump to search
Dark Nebula (talk | contribs)
No edit summary
Gwyneth Llewelyn (talk | contribs)
m Huh. Editing and saving seems to fix the syntax highlighting...?
 
(2 intermediate revisions by 2 users not shown)
Line 17: Line 17:
     }
     }
}</syntaxhighlight>
}</syntaxhighlight>
<syntaxhighlight lang="lsl2">
<syntaxhighlight lang="lsl2">
list DetectedAvatars = [];
list DetectedAvatars = [];
Line 23: Line 24:
     state_entry()
     state_entry()
     {
     {
         llVolumeDetect(TRUE);
         llVolumeDetect(TRUE); // Enable detection of people colliding with object....
     }
     }
     collision_start(integer detected)
     collision_start(integer detected)
Line 31: Line 32:
         {
         {
             llInstantMessage(llDetectedKey(0), " Welcome to the Community");
             llInstantMessage(llDetectedKey(0), " Welcome to the Community");
        DetectedAvatars = llListInsertList(DetectedAvatars, [llDetectedKey(0)], -1);
            DetectedAvatars = llListInsertList(DetectedAvatars, [llDetectedKey(0)], -1);
        if (llGetListLength(DetectedAvatars) == 2)
 
        {
            if (llGetListLength(DetectedAvatars) == 2)
       
            {
            DetectedAvatars = llDeleteSubList(DetectedAvatars, 1, 2);
                DetectedAvatars = llDeleteSubList(DetectedAvatars, 1, 2);
            }
         }
         }
     }
     }
}
}
}
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 14:18, 3 February 2026

Description

Event: collision_start( integer num_detected ){ ; }

Triggered when task starts colliding with another task

• integer num_detected

Caveats

  • Will not detect collisions with ground. Use land_collision_start instead.
  • Phantom objects can never receive trigger collision events.
  • llVolumeDetect(TRUE) objects get trigger collision_start and collision_end but not collision() events.
  • A collision with a hovering avatar does not trigger collisions, unless the avatar turns or moves.
  • Only a physical object will get collision events from colliding with a non-physical object.


Examples

default
{
    collision_start(integer num)
    {
        llSay(0,"No pushing.");
    }
}
list DetectedAvatars = [];
default
{
    state_entry()
    {
        llVolumeDetect(TRUE); // Enable detection of people colliding with object....
    }
    collision_start(integer detected)
    {
        integer index = llListFindList(DetectedAvatars, [llDetectedKey(0)]);
        if (index == -1)
        {
            llInstantMessage(llDetectedKey(0), " Welcome to the Community");
            DetectedAvatars = llListInsertList(DetectedAvatars, [llDetectedKey(0)], -1);

            if (llGetListLength(DetectedAvatars) == 2)
            {
                DetectedAvatars = llDeleteSubList(DetectedAvatars, 1, 2);
            }
        }
    }
}

See Also

Deep Notes

Issues

All Issues

~ Search JIRA for related Issues
   Add enumeration to llPassCollisions() to provide PASS_ALWAYS, PASS_IF_NOT_HANDLED, and PASS_NEVER as explicit options.
(Was: Collisions passed to parent REGARDLESS llPassCollisions(FALSE) in child)

Signature

event void collision_start( integer num_detected );