Difference between revisions of "LlRotTarget"

From Second Life Wiki
Jump to navigation Jump to search
m
m (lsl code tagging)
Line 11: Line 11:
|caveats
|caveats
|constants
|constants
|examples=<pre>vector standrot = <0.0, 0.0, 0.0>;
|examples=
<lsl>
vector standrot = <0.0, 0.0, 0.0>;
vector fliprot = <45.0, 0.0, 0.0>;
vector fliprot = <45.0, 0.0, 0.0>;


Line 59: Line 61:
}
}


</pre>
</lsl>
<pre>vector standrot = <0.0, 0.0, 0.0>;
<lsl>
vector standrot = <0.0, 0.0, 0.0>;
vector fliprot = <45.0, 0.0, 0.0>;
vector fliprot = <45.0, 0.0, 0.0>;


Line 109: Line 112:
      
      
}
}
</pre>
</lsl>
|helpers
|helpers
|also_tests
|also_tests

Revision as of 08:32, 31 March 2008

Summary

Function: integer llRotTarget( rotation rot, float error );

This function is to have the script know when it has reached a rotation.
It registers a rot with a error that triggers at_rot_target and not_at_rot_target events continuously until unregistered.
Returns an integer that is the handle to unregister the target with llRotTargetRemove

• rotation rot target rotation
• float error angle in radians, defines when rot has been reached

A similar function exists for positions: llTarget
This function does not rotate the object, to do that use llSetRot, llRotLookAt or llLookAt.

Examples

<lsl> vector standrot = <0.0, 0.0, 0.0>; vector fliprot = <45.0, 0.0, 0.0>;

// simple two-state rot target detection and rotation by Hypatia Callisto // works, to detect a rotation target. An example I wrote // since there is almost zilch for clean examples for // at_rot_target, not_at_rot_target, llRotTarget, llRotTargetRemove

integer rottarget;

default {

   state_entry(){ 
       rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
       llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(standrot*DEG_TO_RAD)]); // rotate to standrot
   }
   not_at_rot_target()
       { 
       llRotTargetRemove( rottarget );
       llOwnerSay("not there"); 
       }
       
   touch_start (integer total_number){
       state rotatestate; // change to state for new position
   }

}


state rotatestate {

   state_entry(){ 
       rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
       llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(fliprot*DEG_TO_RAD)]); // rotate to new point
   }
   
   at_rot_target(integer tnum, rotation targetrot, rotation ourrot){ 
       llRotTargetRemove( rottarget );
       llOwnerSay("there"); //reached the target
   }
   touch_start(integer touched){ 
       state default; 
   }
   

}

</lsl> <lsl> vector standrot = <0.0, 0.0, 0.0>; vector fliprot = <45.0, 0.0, 0.0>;

// simple two-state rot target detection and rotation by Hypatia Callisto // works, to detect a rotation target. An example I wrote // since there is almost zilch for clean examples for // at_rot_target, not_at_rot_target, llRotTarget, llRotTargetRemove

integer rottarget;

default {

   state_entry(){ 
       rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
       llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(standrot*DEG_TO_RAD)]); // rotate to starting point
   }
   not_at_rot_target()
   { 
       llRotTargetRemove( rottarget );
       llOwnerSay("not there"); //not at target
   }
       
   touch_start (integer total_number)
   {
       state rotatestate; // change to state for new position
   }

}


state rotatestate {

   state_entry(){ 
       rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
       llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(fliprot*DEG_TO_RAD)]); // rotate to new point
   }
   
   at_rot_target(integer tnum, rotation targetrot, rotation ourrot)
   { 
       llRotTargetRemove( rottarget );
       llOwnerSay("there"); //reached the target
   }
   touch_start(integer touched){ 
       state default; 
   }
   

}

</lsl>

See Also

Events

• at_rot_target not_at_rot_target rotational target events
• at_target not_at_target positional target events

Functions

•  llRotTargetRemove Stop a target rotation
•  llTarget Setup a target position
•  llTargetRemove Stop a target position

Deep Notes

Search JIRA for related Issues

Signature

function integer llRotTarget( rotation rot, float error );