llGetNumberOfPrims
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: integer llGetNumberOfPrims( );275 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
Returns an integer that is the number of prims in a link set the script is attached to.
Caveats
- The number of prims returned also includes the number of avatars sitting on the object.
Examples
<lsl>default {
state_entry() { llOwnerSay((string)llGetLinkNumber()); llOwnerSay((string)llGetNumberOfPrims()); }}</lsl>
Useful Snippets
<lsl> // Returns the number of prims in the object, ignoring seated avatars integer GetNumberOfPrims() {
if (llGetAttached()) { // llGetObjectPrimCount fails on attachments, but you can't sit on an attachment return llGetNumberOfPrims(); } return llGetObjectPrimCount(llGetKey());
}
//-- inline version of the above (llGetObjectPrimCount( llGetKey() ) + llGetNumberOfPrims() * !!llGetAttached())
// Returns the number of agents on the object integer GetNumberOfAgents() {
return llGetNumberOfPrims() - GetNumberOfPrims();
}
//-- inline version of the previous ((llGetNumberOfPrims() - llGetObjectPrimCount( llGetKey() )) * !llGetAttached()) </lsl> This method uses a loop, it is less efficient and only included for completeness. It's more efficient to ask the physics engine (via llGetObjectPrimCount) how many prims are in the object. <lsl> // determine the number of prims in linkset integer getNumberOfPrims() {
integer maxLinkNumber = llGetNumberOfPrims(); // subtract seated avatars while( llGetAgentSize( llGetLinkKey(maxLinkNumber) ) ) { --maxLinkNumber; } return maxLinkNumber;
} // END getNumberOfPrims() </lsl>
See Also
Functions
• | llGetObjectPrimCount | – | Returns the number of prims in any object. | |
• | llGetLinkNumber | – | Returns the link number of the prim the script is in. |