Skip to content
lsl.devlsl.devLSL Dev

PRIM_OMEGA

constant
Constant
integer PRIM_OMEGA = 32;

Prim parameter to get, set, or disable a client-side physical-like rotation (analogous to llTargetOmega). 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

Constant groups

PrimParam · PrimParamGet

Other PrimParam values (42)
Other PrimParamGet values (40)

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

  • 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.
  • In the parameters returned by llGetPrimitiveParams([PRIM_OMEGA]), the vector is normalized, and the spinrate is multiplied by the magnitude of the original vector.
Example 1
// 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 = llGetPrimitiveParams([PRIM_OMEGA]); // returns [axis, spinrate, gain]
vector axis = llList2Vector(current_omega, 0); // Should be llVecNorm(<1.0,3.0,0.5>)
float spinrate = llList2Float(current_omega, 1); // Should be TWO_PI*llVecMag(<1.0,3.0,0.5>)
float gain = llList2Float(current_omega, 2); // 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]);
Also, can use llSetPrimitiveParams for the root prim.
7 collapsed lines
// 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 ]);
}
}
Original wiki source

Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.