Skip to content

llSetLinkTexture

void llSetLinkTexture(integer LinkNumber, string Texture, integer Face)

Sets the Texture of Face on a linked prim, specified by LinkNumber. Texture may be a UUID or name of a texture in prim inventory.

Parameters
LinkNumber (integer)
Texture (string)
Face (integer)

Cover a link set in the texture “bark” (from the library):

default
{
touch_start(integer detected)
{
llSetLinkTexture(LINK_SET, "66bf4030-04f9-a808-43ab-b48b6aeb6456", ALL_SIDES);
}
}

The standard llSetLinkTexture function has a 0.2 second delay built in. While SetLinkTextureFast is not extremely fast, it performs faster than the standard function by avoiding that delay:

SetLinkTextureFast(integer link, string texture, integer face)
{
// Obtain the current texture parameters and replace the texture only.
// If we are going to apply the texture to ALL_SIDES, we need
// to adjust the returned parameters in a loop, so that each face
// keeps its current repeats, offsets and rotation.
list Params = llGetLinkPrimitiveParams(link, [PRIM_TEXTURE, face]);
integer idx;
face *= face > 0; // Make it zero if it was ALL_SIDES
// This part is tricky. The list returned by llGLPP has a 4 element stride
// (texture, repeats, offsets, angle). But as we modify it, we add two
// elements to each, so the completed part of the list has 6 elements per
// stride.
integer NumSides = llGetListLength(Params) / 4; // At this point, 4 elements per stride
for (idx = 0; idx < NumSides; ++idx)
{
// The part we've completed has 6 elements per stride, thus the *6.
Params = llListReplaceList(Params, [PRIM_TEXTURE, face++, texture], idx*6, idx*6);
}
llSetLinkPrimitiveParamsFast(link, Params);
}

This helper function preserves each face’s current repeats, offsets, and rotation while only changing the texture.