LlSetLinkPrimitiveParams

From Second Life Wiki

Second Life Wiki > LSL Portal > Built-in Functions > LlSetLinkPrimitiveParams
Jump to: navigation, search

Template:Needs Translation/LSL/de Template:Needs Translation/LSL/es Template:Needs Translation/LSL/el Template:Needs Translation/LSL/he Template:Needs Translation/LSL/it Template:Needs Translation/LSL/ko Template:Needs Translation/LSL/nl Template:Needs Translation/LSL/hu Template:Needs Translation/LSL/no Template:Needs Translation/LSL/da Template:Needs Translation/LSL/sv Template:Needs Translation/LSL/tr Template:Needs Translation/LSL/pl Template:Needs Translation/LSL/pt Template:Needs Translation/LSL/ru Template:Needs Translation/LSL/uk Template:Needs Translation/LSL/zh-Hans Template:Needs Translation/LSL/zh-Hant

Contents

Summary

Buggy
Function: llSetLinkPrimitiveParams( integer linknumber, list rules );
328 Function ID
0.2 Delay
10.0 Energy

Set primitive parameters for linknumber based on rules.

• integer linknumber Link number (0: unlinked, 1: root prim, >1: child prims) or a LINK_* flag
• list rules
Flag Description
LINK_ROOT 1 sends to root prim in a linked set
LINK_SET -1 sends to all prims
LINK_ALL_OTHERS -2 sends to all other prims
Flag Description
LINK_ALL_CHILDREN -3 sends to all children, (everything but the root)
LINK_THIS -4 sends to the prim the script is in
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 mapinteger 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_ZZZZZZZZ 63
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
PRIM_MATERIAL_LIGHT 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 ]
Texture: llSetTexture
Repeats: llScaleTexture
Offset: llOffsetTexture
Rotation: llRotateTexture
PRIM_COLOR, integer face ] 18 [ vector color, float alpha ]
Alpha: llSetAlpha
Color: llSetColor
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_CAST_SHADOWS ] 24 [ integer boolean ] DEPRECATED: Shadow casting for the primitive
[ 1 ]
PRIM_TYPE_LEGACY
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.
    • 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.
  • 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.
  • Applying an operation to LINK_SET is applied first to the root prim, then to each child prim.
  • The sim will clamp attributes before storing them.
  • The client will clamp attributes before rendering.
  • There is currently no corresponding llGetLinkPrimitiveParams although llGetObjectDetails can get the position and rotation of a linked prim identified by its key.
    • The only way to get many parameters from linked prims is to put a separate script in each child and use linked messages.

Important Issues

~ Search JIRA for related Bugs
Bug - A problem which impairs or prevents the functions of the product. Open - The issue is open and ready for the assignee to start work on it.    CHANGED_TEXTURE is not triggered when texture is changed via script
Bug - A problem which impairs or prevents the functions of the product. Open - The issue is open and ready for the assignee to start work on it.    llSetRot and llSetPrimitiveParams (using PRIM_ROTATION) incorrectly implemented for child prims.

Examples

A simple script to light up a prim in a linkset when touched, and unlight the others using llSetLinkPrimitiveParams, when script is installed in the root prim of the linkset.

 
default
{
    touch_start(integer total_number)
    {
        // Turn off all prims
        llSetLinkPrimitiveParams(LINK_SET,[PRIM_FULLBRIGHT,ALL_SIDES,FALSE]);
        // Turn on the one that was touched
        llSetLinkPrimitiveParams(llDetectedLinkNumber(0),[PRIM_FULLBRIGHT,ALL_SIDES,TRUE]);        
    }
}
 

Notes

PRIM_POSITION

Avatars sitting on the object can be moved with llSetLinkPrimitiveParams and PRIM_POSITION. This was originally a mis-feature but according to Andrew Linden LL has decided to support it.

Examples

The below example moves an avatar to x,y,z without moving the prim they are sitting on. If x,y,z is more than 54 meters away the call will silently fail. Remember x,y,z is in object relative coordinates just like any other linked prim in a set.

Avatars are always the last prims in the set, so llGetNumberOfPrims can be used for a single avatar sitting on a vehicle.

Example:

llSetLinkPrimitiveParams(llGetNumberOfPrims(), [PRIM_POSITION, <x,y,z>]);

See Also

Functions

•  llGetLinkNumber Returns the link number of the prim the script is in.
•  llSetPrimitiveParams Set many primitive parameters
•  llGetPrimitiveParams Get many primitive parameters
•  llSetLinkAlpha
•  llSetLinkColor
•  llSetLinkTexture

Articles

•  Color in LSL
•  Translucent Color

Deep Notes

PRIM_TYPE top_size and client taper conversion
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
Bug - A problem which impairs or prevents the functions of the product. Open - The issue is open and ready for the assignee to start work on it.    CHANGED_TEXTURE is not triggered when texture is changed via script
Bug - A problem which impairs or prevents the functions of the product. Open - The issue is open and ready for the assignee to start work on it.    llSetRot and llSetPrimitiveParams (using PRIM_ROTATION) incorrectly implemented for child prims.
This article wasn't helpful for you? Maybe the related article at the LSL Wiki is able to bring enlightenment.
Personal tools
In other languages