PRIM OMEGA/ja
		
		
		
		
		
		Jump to navigation
		Jump to search
		 
     
    
		
	
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials | 
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 ]);Caveats
- PRIM_OMEGA/ja 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/ja cannot be used on avatars sitting on the object. It will emit the error message "PRIM_OMEGA disallowed on agent".
- If PRIM_OMEGA/ja 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/ja]), the vector is normalized, and the spinrate is multiplied by the magnitude of the original vector.
Related Articles
Examples
// 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.
// 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 ]);
    }
}
Deep Notes
History
- Introduced in Second Life RC BlueSteel 11.06.20.233291, June 22, 2011
- Rolled to main server channel the week of 7/11/2011
Search JIRA for related Issues
| Signature | 
|---|
| integer PRIM_OMEGA = 32; |