Difference between revisions of "LlSetAnimationOverride"

From Second Life Wiki
Jump to navigation Jump to search
m (Clarification of the current effects of some undefined behavior. Bashed my head against this one for a while.)
Line 13: Line 13:
* State "Sit on Ground" will play the default animation in addition to any override set. This is required for correct viewer behavior.
* State "Sit on Ground" will play the default animation in addition to any override set. This is required for correct viewer behavior.
* Some states are transitional and have undefined behavior if set to continuously looping animations. These states are "PreJumping", "Landing", "Soft Landing" and "Standing Up".
* Some states are transitional and have undefined behavior if set to continuously looping animations. These states are "PreJumping", "Landing", "Soft Landing" and "Standing Up".
** Usually this means your avatar will become frozen in place unless you run "Stop Animating My Avatar" from the viewer, so avoid using looping animations for these states.
* Permissions aren't auto granted if you sit on an object asking for PERMISSION_OVERRIDE_ANIMATIONS.
* Permissions aren't auto granted if you sit on an object asking for PERMISSION_OVERRIDE_ANIMATIONS.
* Starting a default animation ("sit" "walk" "fly") with [[llStartAnimation]] will not start the Override Animation.
* Starting a default animation ("sit" "walk" "fly") with [[llStartAnimation]] will not start the Override Animation.

Revision as of 05:21, 23 August 2014

Summary

Function: llSetAnimationOverride( string anim_state, string anim );

Set the animation (anim) that will play for the given animation state (anim_state).

• string anim_state animation state to be overriden
• string anim an animation in the inventory of the prim this script is in or the name of a built-in animation

To run this function the script must request the PERMISSION_OVERRIDE_ANIMATIONS permission with llRequestPermissions. Note: Animation overrides survive everything, except relog.

Value Type Description Default
"Crouching" State crouch
"CrouchWalking" State crouchwalk
"Falling Down" State falldown
"Flying" State fly
"FlyingSlow" State Transition between hovering and forward flight. flyslow
"Hovering" State hover
"Hovering Down" State hover_down
"Hovering Up" State hover_up
"Jumping" State While still in the air during a jump. jump
"Landing" Transition When landing from a jump. land
"PreJumping" Transition At the beginning of a jump. prejump
"Running" State run
"Sitting" State Sitting on an object (and linked to it). sit
"Sitting on Ground" State Sitting, but not linked to an object.[1] sit_ground_constrained
"Standing" State stand
"Standing Up" Transition After falling a great distance. Sometimes referred to as Hard Landing. standup
"Striding" State When the avatar is stuck on the edge of an object or on top of another avatar. stride
"Soft Landing" Transition After falling a small distance. soft_land
"Taking Off" State hover_up
"Turning Left" State turnleft
"Turning Right" State turnright
"Walking" State walk

Caveats

Permissions
  • Once the PERMISSION_OVERRIDE_ANIMATIONS permission is granted there may be no way to revoke it except from inside the script (for example, with a new llRequestPermissions call) or if the script is reset. Furthermore even if the script loses the permission (or is derezzed), it will not reset/revert the overridable animations.
    • For Viewer 3.6.7 and up: If the object is not attached to the permission granter but is in the same region, then Me>Movement>Stop Animating Me will revoke both PERMISSION_TRIGGER_ANIMATION and PERMISSION_OVERRIDE_ANIMATIONS (other permissions will remain). In this case, overrides are reset.
  • If anim is missing from the prim's inventory or it is not an animation then an error is shouted on DEBUG_CHANNEL.
  • Animation overrides survive script reset, script removal, attachment removal, crossing into another region and teleporting, but not relog.
  • State "Sit on Ground" will play the default animation in addition to any override set. This is required for correct viewer behavior.
  • Some states are transitional and have undefined behavior if set to continuously looping animations. These states are "PreJumping", "Landing", "Soft Landing" and "Standing Up".
    • Usually this means your avatar will become frozen in place unless you run "Stop Animating My Avatar" from the viewer, so avoid using looping animations for these states.
  • Permissions aren't auto granted if you sit on an object asking for PERMISSION_OVERRIDE_ANIMATIONS.
  • Starting a default animation ("sit" "walk" "fly") with llStartAnimation will not start the Override Animation.

Examples

<lsl>// Override the Sit, Stand and Walk animations // 1. place this script and your animations in a prim // 2. edit the animation names in the script to your animation's names // 3. attach the prim to your avatar

string gMySit = "chop_sit"; string gMyStand = "FStand _02"; string gMyWalk = "Kort gang F v4.1";

default {

   attach(key id)
   {
       if ( id ) llRequestPermissions(id , PERMISSION_OVERRIDE_ANIMATIONS);
       else if ( llGetPermissions() & PERMISSION_OVERRIDE_ANIMATIONS ) llResetAnimationOverride("ALL");
   }
   run_time_permissions(integer perms)
   {
       if ( perms & PERMISSION_OVERRIDE_ANIMATIONS )
       {
           llSetAnimationOverride( "Sitting", gMySit);
           llSetAnimationOverride( "Standing", gMyStand);
           llSetAnimationOverride( "Walking", gMyWalk);
       }
   }
}</lsl>

See Also

Events

•  run_time_permissions Permission receiving event

Functions

•  llGetPermissions Get the permissions granted
•  llGetPermissionsKey Get the agent who granted permissions
•  llRequestPermissions Request permissions
•  llGetAnimationOverride
•  llResetAnimationOverride

Articles

•  Script permissions
•  Internal_Animations lists internal Animations always available

Deep Notes

History

Date of Release 12/04/2013

Footnotes

  1. ^ "Sit down" on the avatar context menu allows ground sits anywhere: atop the terrain, objects or even in the air.

Signature

function void llSetAnimationOverride( string anim_state, string anim );