PRIM OMEGA

From Second Life Wiki
Revision as of 20:27, 21 November 2013 by KiraCodie Resident (talk | contribs) (added an additional example)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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;