LlGetPrimitiveParams
From Second Life Wiki
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Contents |
Summary
Function: list llGetPrimitiveParams( list params );| 279 | Function ID |
| 0.2 | Delay |
| 10.0 | Energy |
Returns a list that is the primitive parameters specified in the params list.
| • list | params | – | PRIM_* flags |
PRIM_* flags can be broken into two categories, face flags and prim flags.
- Supplying a prim flag will return that flags attributes.
- Face flags require the user to also supply a side parameter.
|
| ||||||||||||
| Parameter | Return Values | Description | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [ PRIM_NAME ] | 27 | [ string name ] | Name: llGetObjectName | ||||||||||||||||||
| [ PRIM_DESC ] | 28 | [ string description ] | Description: llGetObjectDesc | ||||||||||||||||||
| [ PRIM_TYPE ] | 9 | [ integer flag ] | Gets the prim shape. | ||||||||||||||||||
| flag Constants | Additional Return Values | ||||||||||||||||||||
| PRIM_TYPE_BOX | 0 | [ integer hole_shape, vector cut, float hollow, vector twist, vector top_size, vector top_shear ] | |||||||||||||||||||
| PRIM_TYPE_CYLINDER | 1 | [ integer hole_shape, vector cut, float hollow, vector twist, vector top_size, vector top_shear ] | |||||||||||||||||||
| PRIM_TYPE_PRISM | 2 | [ integer hole_shape, vector cut, float hollow, vector twist, vector top_size, vector top_shear ] | |||||||||||||||||||
| PRIM_TYPE_SPHERE | 3 | [ integer hole_shape, vector cut, float hollow, vector twist, vector dimple] | |||||||||||||||||||
| PRIM_TYPE_TORUS | 4 | [ integer hole_shape, vector cut, float hollow, vector twist, vector hole_size, vector top_shear, vector advanced_cut, vector taper, float revolutions, float radius_offset, float skew ] | |||||||||||||||||||
| PRIM_TYPE_TUBE | 5 | [ integer hole_shape, vector cut, float hollow, vector twist, vector hole_size, vector top_shear, vector advanced_cut, vector taper, float revolutions, float radius_offset, float skew ] | |||||||||||||||||||
| PRIM_TYPE_RING | 6 | [ integer hole_shape, vector cut, float hollow, vector twist, vector hole_size, vector top_shear, vector advanced_cut, vector taper, float revolutions, float radius_offset, float skew ] | |||||||||||||||||||
| PRIM_TYPE_SCULPT | 7 | [ string map, integer type ] Sculpted_Prims:_FAQ | |||||||||||||||||||
| hole_shape Flags | Shape | hole_shape Flags | Shape | ||||||||||||||||||
| PRIM_HOLE_DEFAULT | 0x00 | Default | PRIM_HOLE_SQUARE | 0x20 | Square | ||||||||||||||||
| PRIM_HOLE_CIRCLE | 0x10 | Circle | PRIM_HOLE_TRIANGLE | 0x30 | Triangle | ||||||||||||||||
| type Flags | Style | Description | |||||||||||||||||||
| PRIM_SCULPT_TYPE_SPHERE | 1 | Sphere | Converge top & bottom, stitch left side to right | ||||||||||||||||||
| PRIM_SCULPT_TYPE_TORUS | 2 | Torus | Stitch top to bottom, stitch left side to right | ||||||||||||||||||
| PRIM_SCULPT_TYPE_PLANE | 3 | Plane | No stitching or converging | ||||||||||||||||||
| PRIM_SCULPT_TYPE_CYLINDER | 4 | Cylinder | Stitch left side to right. | ||||||||||||||||||
| PRIM_SCULPT_FLAG_INVERT | 64 | Invert | Render inside out (inverts the normals). | ||||||||||||||||||
| PRIM_SCULPT_FLAG_MIRROR | 128 | Mirror | Render an X axis mirror of the sculpty. | ||||||||||||||||||
| [ PRIM_SLICE ] | 35 | [ vector slice ] | Gets the prim's slice (a shape attribute). | ||||||||||||||||||
| [ PRIM_PHYSICS_SHAPE_TYPE ] | 30 | [ integer type ] | Gets the prim's physics shape type. | ||||||||||||||||||
| type Flags | V | Description | Notes | ||||||||||||||||||
| PRIM_PHYSICS_SHAPE_PRIM | 0 | Use the normal prim shape for physics | default for all non-mesh objects | ||||||||||||||||||
| PRIM_PHYSICS_SHAPE_CONVEX | 2 | Use the convex hull of the prim shape for physics | default for all mesh objects | ||||||||||||||||||
| PRIM_PHYSICS_SHAPE_NONE | 1 | Ignore this prim in the physics shape. | This cannot be applied to the root prim. | ||||||||||||||||||
| [ PRIM_MATERIAL ] | 2 | [ integer material ] | Gets the prim's material. The material determines the default collision sound & sprite. | ||||||||||||||||||
| material Flags | Description | ||||||||||||||||||||
| PRIM_MATERIAL_STONE | 0 | stone | |||||||||||||||||||
| PRIM_MATERIAL_METAL | 1 | metal | |||||||||||||||||||
| PRIM_MATERIAL_GLASS | 2 | glass | |||||||||||||||||||
| PRIM_MATERIAL_WOOD | 3 | wood | |||||||||||||||||||
| PRIM_MATERIAL_FLESH | 4 | flesh | |||||||||||||||||||
| PRIM_MATERIAL_PLASTIC | 5 | plastic | |||||||||||||||||||
| PRIM_MATERIAL_RUBBER | 6 | rubber | |||||||||||||||||||
| | 7 | light, DEPRECATED: Looks the same as [ PRIM_FULLBRIGHT, ALL_SIDES, TRUE ] | |||||||||||||||||||
| [ PRIM_PHYSICS ] | 3 | [ integer boolean ] | Physics status llGetStatus | ||||||||||||||||||
| [ PRIM_TEMP_ON_REZ ] | 4 | [ integer boolean ] | Temporary attribute | ||||||||||||||||||
| [ PRIM_PHANTOM ] | 5 | [ integer boolean ] | Phantom status llGetStatus | ||||||||||||||||||
| [ PRIM_POSITION ] | 6 | [ vector position ] | Position, llGetPos | ||||||||||||||||||
| [ PRIM_POS_LOCAL ] | 33 | [ vector position ] | Local position, llGetLocalPos | ||||||||||||||||||
| [ PRIM_ROTATION ] | 8 | [ rotation rot ] | Global rotation, llGetRot | ||||||||||||||||||
| [ PRIM_ROT_LOCAL ] | 29 | [ rotation rot ] | Local rotation, llGetLocalRot | ||||||||||||||||||
| [ PRIM_SIZE ] | 7 | [ vector size ] | Size, llGetScale | ||||||||||||||||||
| [ PRIM_TEXTURE, integer face ] | 17 | [ string texture, vector repeats, vector offsets, float rotation_in_radians ] |
| ||||||||||||||||||
| [ PRIM_TEXT ] | 26 | [ string text, vector color, float alpha ] | Floating Text: NA | ||||||||||||||||||
| [ PRIM_COLOR, integer face ] | 18 | [ vector color, float alpha ] |
| ||||||||||||||||||
| [ PRIM_BUMP_SHINY, integer face ] | 19 | [ integer shiny, integer bump ] | |||||||||||||||||||
| shiny & bump Flags | Description | ||||||||||||||||||||
| PRIM_SHINY_NONE | 0 | none | |||||||||||||||||||
| PRIM_SHINY_LOW | 1 | low | |||||||||||||||||||
| PRIM_SHINY_MEDIUM | 2 | medium | |||||||||||||||||||
| PRIM_SHINY_HIGH | 3 | high | |||||||||||||||||||
| PRIM_BUMP_NONE | 0 | none: no bump map | |||||||||||||||||||
| PRIM_BUMP_BRIGHT | 1 | brightness: generate from highlights | |||||||||||||||||||
| PRIM_BUMP_DARK | 2 | darkness: generate from lowlights | |||||||||||||||||||
| PRIM_BUMP_WOOD | 3 | woodgrain | |||||||||||||||||||
| PRIM_BUMP_BARK | 4 | bark | |||||||||||||||||||
| PRIM_BUMP_BRICKS | 5 | bricks | |||||||||||||||||||
| PRIM_BUMP_CHECKER | 6 | checker | |||||||||||||||||||
| PRIM_BUMP_CONCRETE | 7 | concrete | |||||||||||||||||||
| PRIM_BUMP_TILE | 8 | crustytile | |||||||||||||||||||
| PRIM_BUMP_STONE | 9 | cutstone: blocks | |||||||||||||||||||
| PRIM_BUMP_DISKS | 10 | discs: packed circles | |||||||||||||||||||
| PRIM_BUMP_GRAVEL | 11 | gravel | |||||||||||||||||||
| PRIM_BUMP_BLOBS | 12 | petridish: blobby amoeba like shapes | |||||||||||||||||||
| PRIM_BUMP_SIDING | 13 | siding | |||||||||||||||||||
| PRIM_BUMP_LARGETILE | 14 | stonetile | |||||||||||||||||||
| PRIM_BUMP_STUCCO | 15 | stucco | |||||||||||||||||||
| PRIM_BUMP_SUCTION | 16 | suction: rings | |||||||||||||||||||
| PRIM_BUMP_WEAVE | 17 | weave | |||||||||||||||||||
| [ PRIM_FULLBRIGHT, integer face ] | 20 | [ integer boolean ] | |||||||||||||||||||
| [ PRIM_FLEXIBLE ] | 21 | [ integer boolean, integer softness, float gravity, float friction, float wind, float tension, vector force ] | |||||||||||||||||||
| [ PRIM_TEXGEN, integer face ] | 22 | [ integer mode ] | |||||||||||||||||||
| mode Constants | Description | ||||||||||||||||||||
| PRIM_TEXGEN_DEFAULT | 0 | ||||||||||||||||||||
| PRIM_TEXGEN_PLANAR | 1 | ||||||||||||||||||||
| [ PRIM_POINT_LIGHT ] | 23 | [ integer boolean, vector color, float intensity, float radius, float falloff ] | |||||||||||||||||||
| [ PRIM_GLOW, integer face ] | 25 | [ float intensity ] | |||||||||||||||||||
| [ PRIM_OMEGA ] | 32 | [ vector axis, float spinrate, float gain ] | llTargetOmega | ||||||||||||||||||
| [ PRIM_LINK_TARGET ] | 34 | [ integer link_target ] | Multiple llGetLinkPrimitiveParams calls. | ||||||||||||||||||
| [ | 24 | [ integer boolean ] | DEPRECATED: Shadow casting for the primitive | ||||||||||||||||||
Caveats
- This function causes the script to sleep for 0.2 seconds.
- PRIM_OMEGA on nonphysical objects, and child prims of physical objects, is only a client side effect; the object or prim will collide as non-moving geometry.
- PRIM_OMEGA cannot be used on avatars sitting on the object. It will emit the error message "PRIM_OMEGA disallowed on agent".
- If PRIM_OMEGA does not appear to be working, make sure that that Develop > Network > Velocity Interpolate Objects is enabled on the viewer.
- If PRIM_LINK_TARGET's link_target describes a seated avatar...
- Flags not explicitly mentioned have obvious values.
- PRIM_NAME will return the avatar's legacy name.
- PRIM_DESC will return
"". - PRIM_TYPE will return
[PRIM_TYPE_BOX, PRIM_HOLE_DEFAULT, <0., 1., 0.>, 0., <0., 0., 0.>, <1., 1., 0.>, <0., 0., 0.>] - PRIM_SLICE will return
[<0., 1., 0.>] - PRIM_MATERIAL will return
PRIM_MATERIAL_FLESH. - PRIM_TEMP_ON_REZ will return
FALSE. - PRIM_PHANTOM will return
FALSE. - PRIM_SIZE will return
llGetAgentSize(llGetLinkKey(link)). - PRIM_TEXT will return
[["", <0., 0., 0.>, 1.]]. - PRIM_POINT_LIGHT will return
[FALSE, <0., 0., 0.>, 0., 0., 0.]. - PRIM_FLEXIBLE will return
[FALSE, 0, 0., 0., 0., 0., <0., 0., 0.>]. - PRIM_COLOR, PRIM_TEXTURE, PRIM_GLOW, PRIM_FULLBRIGHT, PRIM_BUMP_SHINY, PRIM_TEXGEN
- will return the values for 21 faces.[3]
- Regardless of the face specified, the values are always defaults:
flag Flag return for a single face. [ PRIM_COLOR ] [ ZERO_VECTOR, 0.0 ] [ PRIM_GLOW ] [ 0.0 ] [ PRIM_TEXTURE ] [ "", ZERO_VECTOR, ZERO_VECTOR, 0.0 ] [ PRIM_FULLBRIGHT ] [ FALSE ] [ PRIM_TEXGEN ] [ PRIM_TEXGEN_DEFAULT ] [ PRIM_BUMP_SHINY ] [ PRIM_SHINY_NONE, PRIM_BUMP_NONE ]
Examples
To test whether an object is a point light source, and if so get its parameters:
string msg = "Object is "; integer isLight; vector colour; float intensity; float radius; float falloff; list params = llGetPrimitiveParams([PRIM_POINT_LIGHT]); isLight = llList2Integer(params, 0); if (isLight == FALSE) msg += "not a light source."; else { colour = llList2Vector(params, 1); intensity = llList2Float(params, 2); radius = llList2Float(params, 3); falloff = llList2Float(params, 4); msg += "a point light source.\nColour = "+(string)colour; msg += "\nIntensity = "+(string)intensity; msg += "\nRadius = "+(string)radius; msg += "\nFalloff = "+(string)falloff; } llSay(0, msg);
Useful Snippets
list GetPrimitiveParams(list input) {//Returns a list that can be fed to llSetPrimitiveParams list output; integer c = ~llGetListLength(input); while(0x80000000 & (c = - ~c)) { list flag = (list)llList2Integer(input, c); if(~llListFindList([PRIM_BUMP_SHINY, PRIM_COLOR, PRIM_TEXTURE, PRIM_FULLBRIGHT, PRIM_TEXGEN, PRIM_GLOW], flag )) { integer side = llList2Integer(input, (c = - ~c)); if(~side)//pop the stack output += flag + side + llGetPrimitiveParams( flag + side ); else { side = llGetNumberOfSides(); do //we return the sides in reverse order, easier to code; runs faster. output += flag + side + llGetPrimitiveParams( flag + (side = ~ -side) ); while(side); } } else output += flag + llGetPrimitiveParams( flag ); } return output; } //Contributed by Strife Onizuka
SetPrimitiveParams-Example by Anylyn Hax makes reading primitive parameters easy.
Notes
Link Numbers
Each prim that makes up an object has an address, a link number. To access a specific prim in the object, the prim's link number must be known. In addition to prims having link numbers, avatars seated upon the object do as well.
- If an object consists of only one prim, and there are no avatars seated upon it, the (root) prim's link number is zero.
- However, if the object is made up of multiple prims or there is an avatar seated upon the object, the root prim's link number is one.
When an avatar sits on an object, it is added to the end of the link set and will have the largest link number. In addition to this, while an avatar is seated upon an object, the object is unable to link or unlink prims without unseating the avatars first.
Counting Prims & Avatars
There are two functions of interest when trying to find the number of prims and avatars on an object.
-
llGetNumberOfPrims()- Returns the number of prims and seated avatars. -
llGetObjectPrimCount(llGetKey())- Returns only the number of prims in the object but will return zero for attachments.
integer GetPrimCount() { //always returns only the number of prims if(llGetAttached())//Is it attached? return llGetNumberOfPrims();//returns avatars and prims but attachments can't be sat on. return llGetObjectPrimCount(llGetKey());//returns only prims but won't work on attachments. }See llGetNumberOfPrims for more about counting prims and avatars.
See Also
Functions
| • | llGetLinkNumber | – | Returns the link number of the prim the script is in. | |
| • | llSetPrimitiveParams | – | Set many primitive parameters | |
| • | llSetLinkPrimitiveParams | |||
| • | llGetLinkPrimitiveParams | |||
| • | llGetObjectDetails |
Articles
| • | Limits | – | SL limits and constrictions | |
| • | Color in LSL | |||
| • | Translucent Color | |||
| • | Color in LSL | |||
| • | Translucent Color |
Deep Notes
| Range[2] | Top Tapered | No Tapering | Bottom Tapered | |
|---|---|---|---|---|
| Client | [-1, 1] | 1.0 | 0.0 | -1.0 |
| PRIM_TYPE | [0, 2] | 0.0 | 1.0 | 2.0 |
| LEGACY | [0, 1] | 0.0 | 1.0 | NA |
| Client < 1.11 | [0, 1] | 0.0 | 1.0 | NA |
top_size Explained
When the original PRIM_TYPE interface was retired (PRIM_TYPE_LEGACY, SL 1.5), the new PRIM_TYPE interface did not yet support tapering of the bottom of the prim, this feature wasn't added until SL 1.11 (two years later). Instead of retiring the new PRIM_TYPE when it was added, the range of top_size was enlarged; meanwhile in the client they redefined the parameter and it's values. This redefinition and range enlargement resulted in two interfaces that did the same thing but achieved it through different values. Meanwhile PRIM_TYPE_LEGACY's interface was not updated to support tapering of the bottom of the prim. Consequently all three interfaces have different ranges, making for a rather nasty caveat.
Footnotes
- ^ Floating text with an alpha set to 0.0 is rendered "invisible"
- ^ The ranges in this article are written in Interval Notation.
- ^ Avatars really have 29 textures, llGetLinkNumberOfSides however returns 0 - SVC-6646[c].
- ^ llGetPrimitiveParams came after PRIM_TYPE_LEGACY was deprecated.

