Difference between revisions of "LlSetTextureAnim"
Anylyn Hax (talk | contribs) (even if in some cases floats can be integer , this is educative here so let the floatsa be floats and the integer to be integer) |
|||
Line 59: | Line 59: | ||
|examples= | |examples= | ||
This slides a texture smoothly and loops it when it gets to the end. | This slides a texture smoothly and loops it when it gets to the end. | ||
<lsl>llSetTextureAnim(ANIM_ON | SMOOTH | LOOP , ALL_SIDES, 1, 1, 1, 1, 1);</lsl> | <lsl>llSetTextureAnim(ANIM_ON | SMOOTH | LOOP , ALL_SIDES, 1, 1, 1.0, 1.0, 1.0);</lsl> | ||
This slides a texture smoothly in the opposite direction | This slides a texture smoothly in the opposite direction | ||
<lsl>llSetTextureAnim(ANIM_ON | SMOOTH | LOOP , ALL_SIDES, 1, 1, 1, 1, -1);</lsl> | <lsl>llSetTextureAnim(ANIM_ON | SMOOTH | LOOP , ALL_SIDES, 1, 1, 1.0, 1.0, -1.0);</lsl> | ||
This divides a texture into 64 "cells", 8 across, and 8 down, and flips through them, left to right, top to bottom. This is useful for cell animation. | This divides a texture into 64 "cells", 8 across, and 8 down, and flips through them, left to right, top to bottom. This is useful for cell animation. | ||
<lsl>llSetTextureAnim( ANIM_ON | LOOP, ALL_SIDES, 8, 8, 0, 64, 6.4 );</lsl> | <lsl>llSetTextureAnim( ANIM_ON | LOOP, ALL_SIDES, 8, 8, 0.0, 64.0, 6.4 );</lsl> | ||
This rotates a texture counter-clockwise at 2 revolutions per second. Change the last value to -2*TWO_PI to rotate clockwise. | This rotates a texture counter-clockwise at 2 revolutions per second. Change the last value to -2*TWO_PI to rotate clockwise. | ||
Line 71: | Line 71: | ||
This scales a texture larger and smaller. | This scales a texture larger and smaller. | ||
<lsl>llSetTextureAnim(ANIM_ON | SMOOTH | SCALE | PING_PONG | LOOP, ALL_SIDES, 1, 1, 1, 3, 2);</lsl> | <lsl>llSetTextureAnim(ANIM_ON | SMOOTH | SCALE | PING_PONG | LOOP, ALL_SIDES, 1, 1, 1.0, 3.0, 2.0);</lsl> | ||
This turns off all texture animations | This turns off all texture animations | ||
Line 84: | Line 84: | ||
if (ON) | if (ON) | ||
{ | { | ||
llSetTextureAnim(ANIM_ON | LOOP, ALL_SIDES, 1, 5, 0, 0, 1); | llSetTextureAnim(ANIM_ON | LOOP, ALL_SIDES, 1, 5, 0.0, 0.0, 1.0); | ||
} | } | ||
else | else | ||
{ | { | ||
llSetTextureAnim(ANIM_ON | SMOOTH, ALL_SIDES, 1, 5, 5, 1, 1); | llSetTextureAnim(ANIM_ON | SMOOTH, ALL_SIDES, 1, 5, 5.0, 1.0, 1.0); | ||
} | } | ||
ON = !ON; | ON = !ON; |
Revision as of 11:31, 21 October 2010
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: llSetTextureAnim( integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate );0.0 | Forced Delay |
10.0 | Energy |
Animate the texture on the specified face/faces by setting the texture scale and offset.
• integer | mode | – | mask of Mode flags | |
• integer | face | – | face number or ALL_SIDES | |
• integer | sizex | – | horizontal frames (ignored for ROTATE and SCALE) | |
• integer | sizey | – | vertical frames (ignored for ROTATE and SCALE) | |
• float | start | – | Start position/frame number (or radians for ROTATE) | |
• float | length | – | number of frames to display (or radians for ROTATE) | |
• float | rate | – | frames per second (must not be zero) |
start supports negative indexes.
If face is ALL_SIDES then the function works on all sides.
Frames are numbered from left to right, top to bottom, starting at 0.
If rate is negative, it has the same effect as using the REVERSE flag.[1]
Specification
Index | Positive | Negative |
---|---|---|
First | 0
|
-length
|
Last | length - 1
|
-1
|
Indexes
- Positive indexes count from the beginning, the first item being indexed as
0
, the last as(length - 1)
.
- Negative indexes count from the far end, the first item being indexed as
-length
, the last as-1
.
Frames
Frames are sub-rectangles within the texture. A set of frames with 2 horizontal (sizex) and 3 vertical (sizey) means the overall texture is divided into 3 rows of 2 columns of images, each of which is a frame. llSetTextureAnim will animate across these 6 starting with the top left image and going across and down, optionally repeating. If SMOOTH is set the frames slide smoothly from one to the next, if off, each frame is displayed in turn centered on the face.
Modes | Description | |
---|---|---|
ANIM_ON | 0x01 | Texture animation is on. This must be set to start the animation, cleared to stop it. |
LOOP | 0x02 | Loop the texture animation. |
REVERSE | 0x04 | Play animation in reverse direction. |
PING_PONG | 0x08 | Play animation going forwards, then backwards. |
SMOOTH | 0x10 | Slide in the X direction, instead of playing separate frames. In both SCALE and ROTATE modes, causes smooth transitions. |
ROTATE | 0x20 | Animate texture rotation. Does not work with SCALE |
SCALE | 0x40 | Animate the texture scale. Does not work with ROTATE |
Caveats
- If start is out of bounds the script continues to execute without an error message.
- The function silently fails if its face value indicates a face that does not exist.
- You can only have one texture animation on a prim
- Calling llSetTextureAnim more than once on a prim will reset the existing animation.
- You cannot combine ROTATE and SCALE flags.
- sizex & sizey are both limited to a range of 0 to 255
- llSetTextureAnim when on shows the texture with 1 repeat in X and Y and 0 rotation and offset.
Examples
This slides a texture smoothly and loops it when it gets to the end.
<lsl>llSetTextureAnim(ANIM_ONNotes
Texture animation is a property of the prim (i.e., you can remove the script that started the animation, and the prim will remember the settings anyway.) Note, though, that as of Jan 2009, texture animation is still one of the prim properties that are lost when using the rezzed in world copy method of shift-drag. Originally brought up in VWR-640, it got it's own issue in SVC-3925
An online-tool for rough and ready conversion of moving gifs to animated textures is here: http://www.peregrinesalon.com/anim/ (link valid as of August 27, 2010.)
See Also
- LSL Template Improperly Injected
- LSL Face
- LSL Face/Set
- LSL Negative Index
- Articles in need of haiku
- LSL Functions
- LSL Functions/Returns nothing
- LSL Parameters/mode
- LSL Parameters/sizex
- LSL Parameters/sizey
- LSL Parameters/start
- LSL Parameters/length
- LSL Parameters/rate
- LSL Keywords/All
- LSL topics with bugs
- LSL Media
- LSL Effects
- LSL Texture
- LSL Video