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.)
(Noted that this function changes walk-backward behavior.)
Line 16: Line 16:
* 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.
* When this function is used to override the Walking animation, the avatar can no longer walk backward - attempting to do so causes the avatar to turn around. Presumably this is because there's no way to specify a "walking backwards" animation, so actually moving backwards while your legs are moving forward would look wrong.
|constants={{LSL Animation States}}
|constants={{LSL Animation States}}
|examples=<lsl>// Override the Sit, Stand and Walk animations
|examples=<lsl>// Override the Sit, Stand and Walk animations

Revision as of 06:10, 9 September 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.
  • When this function is used to override the Walking animation, the avatar can no longer walk backward - attempting to do so causes the avatar to turn around. Presumably this is because there's no way to specify a "walking backwards" animation, so actually moving backwards while your legs are moving forward would look wrong.

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 );