Difference between revisions of "LlGetRot"

From Second Life Wiki
Jump to navigation Jump to search
m (friends don't let friends truncate floats)
m ([~caveats, -helper (simplification)] +also-func)
Line 10: Line 10:
|spec
|spec
|caveats=
|caveats=
* [[llGetRot]] incorrectly reports the avatars rotation when called from the root of an attached object, see [[llGetRot#Useful_Snippets|Useful Snippets]] for a workaround.
* [[llGetRot]] incorrectly reports the avatars rotation when called from the root of an attached object, use [[llGetLocalRot]] for root prims, instead
|examples=
|examples=
<lsl> //-- rotates an object to face the nearest cardinal direction (N,E,S,W)
<lsl> //-- rotates an object to face the nearest cardinal direction (N,E,S,W)
Line 29: Line 29:
   }
   }
}</lsl>
}</lsl>
|helpers=
|helpers
<lsl>//-- Workaround for attachment bug in root prims
llGetLocalRot()
 
//-- Workaround for attachment bug in root prims
llList2Rot(llGetLinkPrimitiveParams( LINK_ROOT, [PRIM_ROT_LOCAL] ), 0)</lsl>
|also_header
|also_header
|also_functions=
|also_functions=
Line 44: Line 39:
{{LSL DefineRow||[[llSetPrimitiveParams]]|}}
{{LSL DefineRow||[[llSetPrimitiveParams]]|}}
{{LSL DefineRow||[[llSetLinkPrimitiveParams]]|}}
{{LSL DefineRow||[[llSetLinkPrimitiveParams]]|}}
{{LSL DefineRow||[[llSetLinkPrimitiveParamsFast]]|}}
|also_tests
|also_tests
|also_events
|also_events

Revision as of 15:28, 26 October 2010

Summary

Function: rotation llGetRot( );
0.0 Forced Delay
10.0 Energy

Returns a rotation that is the prim's rotation relative to the region's axes.

Caveats

  • llGetRot incorrectly reports the avatars rotation when called from the root of an attached object, use llGetLocalRot for root prims, instead

Examples

<lsl> //-- rotates an object to face the nearest cardinal direction (N,E,S,W)

//-- assumes build is aligned to root object facing

default{

 state_entry()
 {
   llSay( 0, "Rotate me in edit, then touch to make me face the nearest compass point" );
 }
 touch_start( integer vIntTouches )
 {
    //-- convert our rotation to x/y/z radians
   vector vRadBase = llRot2Euler( llGetRot() );
    //-- round the z-axis to the nearest 90deg (PI_BY_TWO = 90deg in radians)
   llSetRot( llEuler2Rot( <0.0, 0.0, llRound( vRadBase.z / PI_BY_TWO ) * PI_BY_TWO > ) );
 }
}</lsl>

Notes

  • The tooltip in the in-client editor is incorrect, it will work in scripts in objects that are physical.

Deep Notes

Signature

function rotation llGetRot();