LlGetPrimitiveParams
From Second Life Wiki
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script 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_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_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_ROTATION ] | 8 | [ rotation rot ] | Rotation, llGetRot | ||||||||||||||||||
| [ PRIM_SIZE ] | 7 | [ vector size ] | Size, llGetScale | ||||||||||||||||||
| [ PRIM_TEXTURE, integer face ] | 17 | [ string texture, vector repeats, vector offsets, float rotation_in_radians ] |
| ||||||||||||||||||
| [ 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 ] | |||||||||||||||||||
| [ | 24 | [ integer boolean ] | DEPRECATED: Shadow casting for the primitive | ||||||||||||||||||
Caveats
- This function causes the script to sleep for 0.2 seconds.
- If texture is missing from the prim's inventory and it is not a UUID or it is not a texture then an error is shouted on DEBUG_CHANNEL.
- If texture is a UUID then there are no new asset permissions consequences for the object.
- The resulting object develops no new usage restrictions that might have occurred if the asset had been placed in the prims inventory.
- top_size and client values are different, the ranges do not line up, conversion is required. This simple equation can be used: answer = 1.0 - value. See top_size Explained for more information.
- If map is missing from the prim's inventory and it is not a UUID or it is not a texture then an error is shouted on DEBUG_CHANNEL.
- If map is a UUID then there are no new asset permissions consequences for the object.
- The resulting object develops no new usage restrictions that might have occurred if the asset had been placed in the prims inventory.
- position is always in region coordinates, even if the prim is a child or the root prim of an attachment.
- If face is ALL_SIDES then the flag works on all sides.
- If face indicates a face that does not exist the return for the flag is ...
flag Return if face is invalid [ 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 ]
- The legacy value of PRIM_TYPE, 1, is not supported by this function as a flag[1].
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.
See Also
Functions
| • | llSetPrimitiveParams | – | Set many primitive parameters | |
| • | llSetLinkPrimitiveParams | |||
| • | llGetObjectDetails |
Articles
| • | Color in LSL | |||
| • | Translucent Color |
Deep Notes
| Range | 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.
Issues
Search JIRA for related IssuesFootnotes
- ^ llGetPrimitiveParams came after PRIM_TYPE_LEGACY was deprecated.

