Difference between revisions of "User:Dora Gustafson/Replacing llTargetOmega"

From Second Life Wiki
Jump to navigation Jump to search
(Replaced content with "== Content moved == Moved to LlTargetOmega_Replacement : ~~~~")
 
Line 1: Line 1:
{{LSL_Function
== Content moved ==
|func=KeyFramedOmega
Moved to [[LlTargetOmega_Replacement]]
|func_id
: [[User:Dora Gustafson|Dora Gustafson]] 05:15, 1 October 2014 (PDT)
|func_sleep
|func_energy
|func_desc=Rotates the object/prim around axis at a rate of spinrate in radians per second
|func_footnote
|return_type
|return_text
|p1_type=vector
|p1_name=axis
|p1_desc=arbitrary axis to rotate the object around
|p1_hover
|p2_type=float
|p2_name=spinrate
|p2_desc=rate of rotation in radians per second
|p2_hover
|constants
|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=
: 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
|examples=
This script shows how to use the routine to start, stop and reverse a spin on repeated touches
<lsl>
// 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
    }
}
</lsl>
|helpers
|also_header
|also_functions=: [[llTargetOmega]]
: [[llSetKeyframedMotion]]
|also_tests
|also_events
|also_articles
|also_footer
|notes=The magnitude of ''axis'' do '''not''' influence the ''spinrate''
|mode=user
|deprecated
|location=[[User:Dora_Gustafson/Replacing_llTargetOmega/function|The Function]]
|cat1=Rotation
|cat2=Examples
|signature=[[User:Dora Gustafson|Dora Gustafson]] 04:36, 12 August 2014 (PDT)
}}

Latest revision as of 05:15, 1 October 2014

Content moved

Moved to LlTargetOmega_Replacement

Dora Gustafson 05:15, 1 October 2014 (PDT)