// ------------------------------------------------------------ // Random imager with animation support by Charlotte Wirtanen // for free and open distribution. // // Instructions: Place into desired prim, populate with textures. // Rename animated textures with the following format: // // texture_name.anim;;; integer gFrameX = 0; integer gFrameY = 0; float gRate = 0.0; string gTexture; setTex() { gTexture = llGetInventoryName( INVENTORY_TEXTURE, (integer)llFrand( llGetInventoryNumber(INVENTORY_TEXTURE)) ); if (gTexture == "") return; llSetTexture( gTexture, ALL_SIDES ); if( llSubStringIndex( gTexture, ".anim" ) != -1 ) { list lParams = llParseString2List( gTexture, [";"], [] ); gFrameX = llList2Integer( lParams, 1 ); gFrameY = llList2Integer( lParams, 2 ); gRate = llList2Float( lParams, 3 ); llSetTextureAnim( ANIM_ON | LOOP, ALL_SIDES, gFrameX, gFrameY, 0, 0, gRate); } else llSetTextureAnim( LOOP, ALL_SIDES, gFrameX, gFrameY, 0, 0, gRate); } default { state_entry() { llAllowInventoryDrop(TRUE); llSetTimerEvent(60.0); setTex(); } timer() { setTex(); } touch_start( integer touches ) { llSetTimerEvent(60.0); setTex(); } changed( integer change ) { if( change & (CHANGED_ALLOWED_DROP | CHANGED_INVENTORY) ) setTex(); } }