LlSetPrimitiveParams
From Second Life Wiki
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Tutorials |
Contents |
Summary
Function: llSetPrimitiveParams( list rules );| 259 | Function ID |
| 0.2 | Delay |
| 10.0 | Energy |
Sets the prims parameters according to rules.
| • list | rules |
This is a very powerful & sharp function, each rule takes at least one parameter and has its own quirks. Each PRIM_* rule has its own dedicated article with specific information.
| Flag | Description | Usage |
|---|---|---|
| PRIM_TYPE | Sets the prim's shape. | [ PRIM_TYPE, integer flag ] + flag_parameters |
| PRIM_MATERIAL | Sets the prim's material. | [ PRIM_MATERIAL, integer flag ] |
| PRIM_PHYSICS | Sets the object's physics status. | [ PRIM_PHYSICS, integer boolean ] |
| PRIM_TEMP_ON_REZ | Sets the object's temporary attribute. | [ PRIM_TEMP_ON_REZ, integer boolean ] |
| PRIM_PHANTOM | Sets the object's phantom status. | [ PRIM_PHANTOM, integer boolean ] |
| PRIM_POSITION | Sets the prim's position. | [ PRIM_POSITION, vector position ] |
| PRIM_ROTATION | Sets the prim's rotation. | [ PRIM_ROTATION, rotation rot ] |
| PRIM_SIZE | Sets the prim's size. | [ PRIM_SIZE, vector size ] |
| PRIM_TEXTURE | Sets the prim's texture attributes. | [ PRIM_TEXTURE, integer face, string texture, vector repeats, vector offsets, float rotation_in_radians ] |
| PRIM_COLOR | Sets the face's color. | [ PRIM_COLOR, integer face, vector color, float alpha ] |
| PRIM_BUMP_SHINY | Sets the face's shiny & bump. | [ PRIM_BUMP_SHINY, integer face, integer shiny, integer bump ] |
| PRIM_POINT_LIGHT | Sets the prim as a point light. | [ PRIM_POINT_LIGHT, integer boolean, vector color, float intensity, float radius, float falloff ] |
| PRIM_FULLBRIGHT | Sets the face's full bright flag. | [ PRIM_FULLBRIGHT, integer face, integer boolean ] |
| PRIM_FLEXIBLE | Sets the prim as flexible. | [ PRIM_FLEXIBLE, integer boolean, integer softness, float gravity, float friction, float wind, float tension, vector force ] |
| PRIM_TEXGEN | Sets the face's texture mode. | [ PRIM_TEXGEN, integer face, integer type ] |
| PRIM_GLOW | Sets the face's glow attribute. | [ PRIM_GLOW, integer face, float intensity ] |
| PRIM_CAST_SHADOWS | Sets the prim's cast shadow attribute. (DEPRECATED) | [ PRIM_CAST_SHADOWS, integer boolean ] |
| PRIM_TYPE_LEGACY | Sets the prim's shape (legacy mode, DEPRECATED). | [ 1, integer flag ] + flag_parameters |
| Parameter | Additional Parameters | Description | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [ PRIM_TYPE ] | 9 | [ integer flag ] | Sets the prim shape. | ||||||||||||||||||
| flag Constants | Flag Parameters | ||||||||||||||||||||
| 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] | Sets 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 llSetStatus | ||||||||||||||||||
| [ PRIM_TEMP_ON_REZ ] | 4 | [ integer boolean ] | Temporary attribute | ||||||||||||||||||
| [ PRIM_PHANTOM ] | 5 | [ integer boolean ] | Phantom status llSetStatus | ||||||||||||||||||
| [ PRIM_POSITION ] | 6 | [ vector position ] | Position, llSetPos | ||||||||||||||||||
| [ PRIM_ROTATION ] | 8 | [ rotation rot ] | Rotation, llSetRot | ||||||||||||||||||
| [ PRIM_SIZE ] | 7 | [ vector size ] | Size, llSetScale | ||||||||||||||||||
| [ 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 | ||||||||||||||||||
| [ 1 ] | 1 | [ integer flag, paramaters ] | |||||||||||||||||||
| flag Constants | Flag Parameters | ||||||||||||||||||||
| PRIM_TYPE_BOX | 0 | [ vector cut, float hollow, float twist_end, vector top_size, vector top_shear ] | |||||||||||||||||||
| PRIM_TYPE_CYLINDER | 1 | [ vector cut, float hollow, float twist_end, vector top_size, vector top_shear ] | |||||||||||||||||||
| PRIM_TYPE_PRISM | 2 | [ vector cut, float hollow, float twist_end, vector top_size, vector top_shear ] | |||||||||||||||||||
| PRIM_TYPE_SPHERE | 3 | [ vector cut, float hollow, vector dimple ] | |||||||||||||||||||
| PRIM_TYPE_TORUS | 4 | [ vector cut, float hollow, float twist_end, float hole_size_y, vector top_shear, vector advanced_cut ] | |||||||||||||||||||
| PRIM_TYPE_TUBE | 5 | [ vector cut, float hollow, float twist_end, float topshear_x ] | |||||||||||||||||||
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.
- PRIM_POSITION caveats
- Depending upon the situation position may need to be in local coordinates or region coordinates, See llSetPos#Specification for details.
- The range the prim can move is limited if it is an unattached root prim. The distance is capped to 10m per PRIM_POSITION call. See WarpPos. This is a very special case. Do not rely on rule duplication of other flags - the results are undefined, and things will break in the future.
- Moving a prim that an avatar is seated upon will not move the avatar; the sit target will not be updated.
- To mimic updating of a sit-target, use UpdateSitTarget.
- Moving avatars with PRIM_POSITION
- Moving the prim the avatar sat upon does not move the avatar.
- Moving an avatar does not move the prim they sat upon.
- Sit-target coordinates do not easily map to prim coordinates, use UpdateSitTarget.
- If position is greater than 54 meters away from the center, the repositioning will silently fail.
- PRIM_PHANTOM, PRIM_PHYSICS and PRIM_TEMP_ON_REZ applies to the entire object (linkset).
- Values may drift, become truncated or be range limited. Some limits are applied by the client during deserialization, others are applied by the simulator when the sim tries to store the values.
- When testing vectors and rotations use llVecDist and llAngleBetween (respectfully) to perform fuzzy tests.
- If face is ALL_SIDES then the flag works on all sides.
- The flag silently fails if its face value indicates a face that does not exist.
- The sim will clamp attributes before storing them.
- The client will clamp attributes before rendering.
- Scripts written before September 2004 that use PRIM_TYPE depend on PRIM_TYPE to have the value 1; if these scripts are recompiled, the new value of PRIM_TYPE will be used causing errors at runtime.
- To fix this replace the PRIM_TYPE flag with the value 1 or updated to the newer PRIM_TYPE syntax.
- PRIM_ROTATION is bugged in child prims, see deep notes for issue discussion and fix.
Important Issues
~ Search JIRA for related Bugs| | | SVC-914 | [c] | CHANGED_TEXTURE is not triggered when texture is changed via script | |
| | | SVC-93 | [c] | llSetRot and llSetPrimitiveParams (using PRIM_ROTATION) incorrectly implemented for child prims. |
Examples
// To color all sides of a prim black, except side 3 white llSetPrimitiveParams([PRIM_COLOR, ALL_SIDES, <0.0,0.0,0.0>, 1.0]); llSetPrimitiveParams([PRIM_COLOR, 3, <1.0,1.0,1.0>, 1.0]); // To render on side 3 // the picture with the UUID... // and the repeats per face as vector, // the texture offset as second vector, // and the texture rotation as float llSetPrimitiveParams([PRIM_TEXTURE, 3, "4d304955-2b01-c6c6-f545-c1ae1e618288", <1.0,1.0,0.0>, <0.0,0.0,0.0>, 0.0]); // To set the prim "Full Bright" on sides 3 llSetPrimitiveParams([PRIM_FULLBRIGHT,3,TRUE]); // And to make it all in one breath, llSetPrimitiveParams([PRIM_COLOR, ALL_SIDES, <0.0,0.0,0.0>, 1.0, PRIM_COLOR, 3, <1.0,1.0,1.0>, 1.0, PRIM_TEXTURE, 3, "4d304955-2b01-c6c6-f545-c1ae1e618288", <1.0,1.0,0.0>, <0.0,0.0,0.0>, 0.0, PRIM_FULLBRIGHT, 3, TRUE]); //And If you want to place it above you bed, to make you sleep well, and the coords // of that place are for example <x, y, z> llSetPrimitiveParams([PRIM_COLOR, ALL_SIDES, <0.0,0.0,0.0>, 1.0, PRIM_COLOR, 3, <1.0,1.0,1.0>, 1.0, PRIM_TEXTURE, 3, "4d304955-2b01-c6c6-f545-c1ae1e618288", <1.0,1.0,0.0>, <0.0,0.0,0.0>,0.0, PRIM_FULLBRIGHT, 3, TRUE, PRIM_POSITION, <x, y, z>]); //You can set the texture of several sides at once, with no time penalty, //just by repeating the param for that: llSetPrimitiveParams([ PRIM_TEXTURE, 3, "4d304955-2b01-c6c6-f545-c1ae1e618288", <1.0,1.0,0.0>, <0.0,0.0,0.0>, 0.0, PRIM_TEXTURE, 4, "4d304955-2b01-c6c6-f545-c1ae1e618288", <1.0,1.0,0.0>, <0.0,0.0,0.0>, 0.0 ]);
Top-size (taper)
default { state_entry() { vector XYZ = llGetScale(); float X = XYZ.x; float Y = XYZ.y; llSetPrimitiveParams([PRIM_SIZE, <X,Y,0.1>, // keep the prim thin PRIM_TYPE, PRIM_TYPE_BOX, 0, <0.0,1.0,0.0>, 0.0, ZERO_VECTOR, <1.0 - (0.4 / X), 1.0 - (0.4 / Y), 0.0>, ZERO_VECTOR]); //We use the equation "answer = 1 - desired_taper" //The proportions of the top-size (taper) will be maintained (as close as possible) // whenever the prim is resized. The proportion above will produce a reasonably // pleasing picture frame kinda thing. } changed(integer change) { if(change & CHANGED_SCALE) { llResetScript(); } } }
Notes
The old PRIM_TYPE interface (labeled PRIM_TYPE_LEGACY) while technically retired can still be used.
See Also
Functions
| • | llGetPrimitiveParams | – | Get many primitive parameters | |
| • | llSetLinkPrimitiveParams | – | Set parameters on other prims in linkset | |
| • | llSetAlpha | – | Simpler way to set alpha (transparency) | |
| • | llSetTexture | – | Simpler way to set texture | |
| • | llSetColor | – | Simpler way to set color | |
| • | llSetScale | – | Simpler way to set scale | |
| • | llSetStatus | – | Simpler way to set physics and phantom |
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 Issues| | | SVC-914 | [c] | CHANGED_TEXTURE is not triggered when texture is changed via script | |
| | | SVC-93 | [c] | llSetRot and llSetPrimitiveParams (using PRIM_ROTATION) incorrectly implemented for child prims. |

