|
|
| Line 1: |
Line 1: |
| {{LSL Function
| | #redirect[[llSetPrimitiveParams#llSetLinkPrimitiveParamsFast]] |
| |inject-2={{LSL Function/link|link}}{{LSL PrimitiveParam Categorize|Link}}
| |
| |func_id=353|func_sleep=0.0|func_energy=10.0
| |
| |func=llSetLinkPrimitiveParamsFast|sort=SetLinkPrimitiveParamsFast
| |
| |p1_type=integer|p1_name=link
| |
| |p2_type=list|p2_name=rules
| |
| |func_desc=Set primitive parameters for {{LSLP|link}} based on {{LSLP|rules}} with no built-in script sleep. This function is identical to [[llSetLinkPrimitiveParams]] except without the delay.
| |
| |spec
| |
| |caveats=
| |
| *Applying an operation to [[LINK_SET]] will apply it first to the root prim, then to each child prim.
| |
| * [[PRIM_LINK_TARGET]] is a special paramter which can be inserted to perfom actions on multiple prims on the linkset with one call.
| |
| *The sim will clamp attributes before storing them.
| |
| *The client will clamp attributes before rendering.
| |
| * [[PRIM_ROTATION]] is bugged in child prims, see [[llSetLinkPrimitiveParams#Useful_Snipptes|Useful Snippets]] for a workaround, or the linked SVC-93 issue below.
| |
| * '''Some prim properties are reset''' by this function
| |
| ** A flexible prim will become not flexible
| |
| ** A sliced prim will become unsliced
| |
| : In order to preserve properties they must be saved and explicitly set in the function call
| |
| {{LSL Tip|When wanting to change the alpha value of a face, please consider using [[llSetLinkAlpha]](integer link, float alpha, integer face); instead of [[llSetLinkPrimitiveParamsFast]](integer link, [ [[PRIM_COLOR]], integer face, vector color, float alpha ]);, that way you don't have to mess with the color settings. Also don't expect [[llSetLinkPrimitiveParamsFast]] being faster than [[llSetText]] when setting a float text property within a loop like at "% loading" status bars. Measurements showed llSetText being 3-4 times faster. That also might applies for similar functions.}}
| |
| |constants={{LSL Constants/PrimitiveParams|set|remote=true}}
| |
| |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.
| |
| <lsl>
| |
| default
| |
| {
| |
| touch_start(integer num_detected)
| |
| {
| |
| // Turn off all prims
| |
| | |
| llSetLinkPrimitiveParamsFast(LINK_SET,
| |
| [PRIM_FULLBRIGHT, ALL_SIDES, FALSE]);
| |
| | |
| // Turn on the one that was touched
| |
| | |
| llSetLinkPrimitiveParamsFast(llDetectedLinkNumber(0),
| |
| [PRIM_FULLBRIGHT, ALL_SIDES, TRUE]);
| |
| }
| |
| }
| |
| </lsl>
| |
| A simple script which moves all child prims .25m higher than the root prim when touched.
| |
| <lsl>
| |
| default
| |
| {
| |
| touch_start(integer total_number)
| |
| {
| |
| vector obj_pos = llGetPos();
| |
| rotation obj_rot = llGetRot();
| |
| integer i=1;
| |
| while (i <= llGetNumberOfPrims())
| |
| {
| |
| vector prim_pos = llList2Vector(llGetLinkPrimitiveParams(i,[PRIM_POSITION]),0);
| |
| if (i > 1) // If not the root prim
| |
| {
| |
| prim_pos = (prim_pos - obj_pos) / obj_rot; // Convert from region coordinates to local coordinates
| |
| prim_pos.z += 0.25; // increase the Z position by .25m
| |
| llSetLinkPrimitiveParamsFast(i,[PRIM_POSITION,prim_pos]);
| |
| }
| |
| ++i;
| |
| }
| |
| }
| |
| }
| |
| </lsl>
| |
| {{LSL Tip|You can use one function call instead of two when making use of [[PRIM_LINK_TARGET]].}}
| |
| {{{!}} class="sortable" width="100%" {{Prettytable}}
| |
| {{!}}- {{Hl2}}
| |
| ! '''Preferred method using [[PRIM_LINK_TARGET]]'''
| |
| ! '''Second method does the same effect-wise.'''
| |
| {{!}}-
| |
| {{!!}}<lsl>
| |
| default
| |
| {
| |
| touch_start(integer num_detected)
| |
| {
| |
| // color the root prim red and the first linked-prim green
| |
| | |
| llSetLinkPrimitiveParamsFast(LINK_ROOT,
| |
| [PRIM_COLOR, ALL_SIDES, <1.0, 0.0, 0.0>, 1.0,
| |
| PRIM_LINK_TARGET, 2,
| |
| PRIM_COLOR, ALL_SIDES, <0.0, 1.0, 0.0>, 1.0]);
| |
| }
| |
| }
| |
| </lsl>
| |
| {{!!}}
| |
| <lsl>
| |
| default
| |
| {
| |
| touch_start(integer num_detected)
| |
| {
| |
| // color the root prim red and the first linked-prim green
| |
| | |
| llSetLinkPrimitiveParamsFast(LINK_ROOT,
| |
| [PRIM_COLOR, ALL_SIDES, <1.0, 0.0, 0.0>, 1.0]);
| |
| llSetLinkPrimitiveParamsFast(2,
| |
| [PRIM_COLOR, ALL_SIDES, <0.0, 1.0, 0.0>, 1.0]);
| |
| }
| |
| }
| |
| </lsl>
| |
| {{!}}}
| |
| [[File:Readability_of_setlinkprimitiveparamsfast.gif|thumb|700px|center|'''For better readability order the params of llSetLinkPrimitiveParamsFast function calls by PRIM_LINK_TARGET.''']]
| |
| |helpers=
| |
| <lsl>
| |
| //-- PRIM_ROTATION workaround for child prims (works in unattached objects only)
| |
| llSetLinkPrimitiveParamsFast( linknumber, [PRIM_ROT_LOCAL, rot * llGetRootRotation()] )
| |
|
| |
| //-- PRIM_ROTATION workaround for child prims (works in linked objects only)
| |
| llSetLinkPrimitiveParamsFast( linknumber,
| |
| [PRIM_ROT_LOCAL, rot * llList2Rot( llGetLinkPrimitiveParams( LINK_ROOT, [PRIM_ROT_LOCAL] ), 0 )] )
| |
|
| |
| //-- PRIM_ROTATION workaround for child prims (works in all scenarios)
| |
| llSetLinkPrimitiveParamsFast( linknumber,
| |
| [PRIM_ROT_LOCAL, rot * llList2Rot( llGetLinkPrimitiveParams( !!llGetLinkNumber(), [PRIM_ROT_LOCAL] ), 0 )] )
| |
| </lsl>
| |
| |also_functions=
| |
| {{LSL DefineRow||[[llSetLinkPrimitiveParams]]|Set many primitive parameters}}
| |
| {{LSL DefineRow||[[llGetLinkPrimitiveParams]]|Get many primitive parameters}}
| |
| {{LSL DefineRow||[[llSetPrimitiveParams]]|Set many primitive parameters}}
| |
| {{LSL DefineRow||[[llGetPrimitiveParams]]|Get many primitive parameters}}
| |
| {{LSL DefineRow||[[llSetLinkAlpha]]|}}
| |
| {{LSL DefineRow||[[llSetLinkColor]]|}}
| |
| {{LSL DefineRow||[[llSetLinkTexture]]|}}
| |
| {{LSL DefineRow||[[llSetLinkTextureAnim]]|}}
| |
| |also_tests
| |
| |also_events
| |
| |also_articles
| |
| |notes=
| |
| ===[[PRIM_POSITION]]===
| |
| {{#var:PRIM_POSITION/SLPP&A}}
| |
| |cat1=Prim
| |
| |cat2=Movement
| |
| |cat3=Status
| |
| |cat4=Texture
| |
| |cat5=Object
| |
| |cat6=Sit/Teleport
| |
| |cat7=Link/Set
| |
| |cat8
| |
| }}
| |