Difference between revisions of "PRIM OMEGA"

From Second Life Wiki
Jump to: navigation, search
m
m (added an additional example)
Line 32: Line 32:
 
// Set all child prims rotating
 
// Set all child prims rotating
 
llSetLinkPrimitiveParamsFast(LINK_ALL_CHILDREN, [PRIM_OMEGA, <1.0,3.0,0.5>, TWO_PI, 1.0]);
 
llSetLinkPrimitiveParamsFast(LINK_ALL_CHILDREN, [PRIM_OMEGA, <1.0,3.0,0.5>, TWO_PI, 1.0]);
 +
</lsl>
 +
Also, can use llSetPrimitiveParams for the root prim.
 +
<lsl>// will need two prims linked together for this script.
 +
default
 +
{
 +
    state_entry()
 +
    {
 +
        // make some sort of rotation angle for the omega...
 +
        vector rotationAngle = <2.3, 5.5, 9.7> * llTan(85);
 +
       
 +
        // rotate the main prim slowly using the same rotataion angle, rate, and gain...
 +
        llSetPrimitiveParams([ PRIM_OMEGA, rotationAngle * 0.3, 1.0, 1.0 ]);
 +
       
 +
        // rotate the link satellite prim separately around its own axis
 +
        // it will rotate also around the main prim because the main prim is rotating.
 +
        llSetLinkPrimitiveParams(2, [ PRIM_OMEGA, rotationAngle, 1.0, 1.0 ]);
 +
    }
 +
}
 
</lsl>
 
</lsl>
 
|constants
 
|constants

Revision as of 20:27, 21 November 2013

Description

Constant: integer PRIM_OMEGA = 32;

The integer constant PRIM_OMEGA has the value 32

Used to make the object spin at the specified axis and rate, or retrieve spin settings. See llTargetOmega for specification.

llSetPrimitiveParams

[ PRIM_OMEGA, vector axis, float spinrate, float gain ]
• vector axis arbitrary axis to rotate the object around
• float spinrate rate of rotation in radians per second
• float gain also modulates the final spinrate and disables the rotation behavior if zero

When used with llSetPrimitiveParams & llSetLinkPrimitiveParams

llGetPrimitiveParams

llGetPrimitiveParams([ PRIM_OMEGA ]);

Returns the listvector axis, float spinrate, float gain ]

• vector axis arbitrary axis to rotate the object around
• float spinrate rate of rotation in radians per second
• float gain also modulates the final spinrate and disables the rotation behavior if zero

Caveats

  • PRIM_OMEGA on nonphysical objects, and child prims of physical objects, is only a client side effect; the object or prim will collide as non-moving geometry.
  • PRIM_OMEGA cannot be used on avatars sitting on the object. It will emit the error message "PRIM_OMEGA disallowed on agent".
  • If PRIM_OMEGA does not appear to be working, make sure that that Develop > Network > Velocity Interpolate Objects is enabled on the viewer.
All Issues ~ Search JIRA for related Bugs

Related Articles

Examples

<lsl> // Set this prim rotating llTargetOmega(<1.0,3.0,0.5>, TWO_PI, 1.0);

// Read back this prim's current target omega list current_omega = llListToList( llGetPrimitiveParams([PRIM_OMEGA]); // should be [PRIM_OMEGA, axis, spinrate, gain] vector axis = llList2Vector(current_omega, 1); // Should be <1.0,3.0,0.5> float spinrate = llList2Float(current_omega, 2); // Should be TWO_PI float gain = llList2Float(current_omega, 3); // Should be 1.0

// Set all child prims rotating llSetLinkPrimitiveParamsFast(LINK_ALL_CHILDREN, [PRIM_OMEGA, <1.0,3.0,0.5>, TWO_PI, 1.0]); </lsl> Also, can use llSetPrimitiveParams for the root prim. <lsl>// will need two prims linked together for this script. default {

   state_entry()
   {
       // make some sort of rotation angle for the omega...
       vector rotationAngle = <2.3, 5.5, 9.7> * llTan(85); 
       
       // rotate the main prim slowly using the same rotataion angle, rate, and gain...
       llSetPrimitiveParams([ PRIM_OMEGA, rotationAngle * 0.3, 1.0, 1.0 ]);
       
       // rotate the link satellite prim separately around its own axis 
       // it will rotate also around the main prim because the main prim is rotating.
       llSetLinkPrimitiveParams(2, [ PRIM_OMEGA, rotationAngle, 1.0, 1.0 ]);
   }

} </lsl>

Deep Notes

History

Search JIRA for related Issues

Signature

integer PRIM_OMEGA = 32;