Difference between revisions of "LlTargetOmega Replacement"
Jump to navigation
Jump to search
(Created page with "{{LSL_Function |func=KeyFramedOmega |func_id |func_sleep |func_energy |func_desc=Rotates the object/prim around axis at a rate of spinrate in radians per second |func_footnote |r…") |
m (Replaced <source> with <syntaxhighlight>) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 18: | Line 18: | ||
|constants | |constants | ||
|spec= | |spec= | ||
* This doesn't make [[llTargetOmega]] redundant but in some cases a Key Framed motion may be preferred | |||
* The routine: "KeyFramedOmega" is easy to use for [[llTargetOmega]]: It takes the first two parameters in [[llTargetOmega]]: axis and spinrate | |||
* All viewers will see the same spin and rotation | |||
* The object will keep the rotation it has when spin is stopped | |||
* A spin will continue even when the script is deleted | |||
|caveats= | |caveats= | ||
* The script must be in the root prim | |||
* It can not spin child prims | |||
* The object must be convex hull physics type | |||
* Can not spin physical objects | |||
* If the center of mass is not at the center of the root, the object will shake and jerk and drift erratically ([https://jira.secondlife.com/browse/BUG-7266 BUG-7266]) | |||
|examples= | |examples= | ||
This script shows how to use the routine to start, stop and reverse a spin on repeated touches | This script shows how to use the routine to start, stop and reverse a spin on repeated touches | ||
< | <syntaxhighlight lang="lsl2"> | ||
// llTargetOmega substitution by Dora Gustafson, Studio Dora 2014 | // llTargetOmega substitution by Dora Gustafson, Studio Dora 2014 | ||
Line 61: | Line 62: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
|helpers | |helpers | ||
|also_header | |also_header |
Latest revision as of 17:16, 22 October 2022
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: KeyFramedOmega( vector axis, float spinrate );Rotates the object/prim around axis at a rate of spinrate in radians per second
• vector | axis | – | arbitrary axis to rotate the object around | |
• float | spinrate | – | rate of rotation in radians per second |
Specification
- This doesn't make llTargetOmega redundant but in some cases a Key Framed motion may be preferred
- The routine: "KeyFramedOmega" is easy to use for llTargetOmega: It takes the first two parameters in llTargetOmega: axis and spinrate
- All viewers will see the same spin and rotation
- The object will keep the rotation it has when spin is stopped
- A spin will continue even when the script is deleted
Caveats
- The script must be in the root prim
- It can not spin child prims
- The object must be convex hull physics type
- Can not spin physical objects
- If the center of mass is not at the center of the root, the object will shake and jerk and drift erratically (BUG-7266)
Examples
This script shows how to use the routine to start, stop and reverse a spin on repeated touches
// llTargetOmega substitution by Dora Gustafson, Studio Dora 2014
integer P;
KeyFramedOmega( vector axis, float spinrate)
{
llSetKeyframedMotion( [], []);
if ( spinrate )
{
float v = TWO_PI/3.0;
if ( spinrate < 0 ) v = -v;
list L = [llAxisAngle2Rot( axis/llGetRot(), v), v/spinrate];
llSetKeyframedMotion( L+L+L, [KFM_DATA, KFM_ROTATION, KFM_MODE, KFM_LOOP]);
}
}
default
{
state_entry()
{
llSetPrimitiveParams([PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]);
}
touch_end( integer n)
{
P = ++P%4;
if ( P == 1 ) KeyFramedOmega( <0,0,1>, 2.0); // Positive spin
else if ( P == 3 ) KeyFramedOmega( <0,0,1>, -2.0); // Negative spin
else KeyFramedOmega( <0,0,1>, 0.0); // Stop spin
}
}
Notes
The magnitude of axis do not influence the spinrate