LlSetLinkPrimitiveParamsFast

De DigiWiki.

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 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]);        
    }
}

A simple script which moves all child prims .25m higher than the root prim when touched.

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;
        }
    }
}
//-- 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 )] )
Outils personnels
  • Cette page a été consultée 2 758 fois.
donate
Google Ads