-- "Sprite Buffer" to compare frames like as into Maya, -- made especially for ScriptSpot.com by Anubis -- AutoAppend idea (for sequence render) by Svan ( www.svan3d.com ) -- Last update v.1.2 [2010-06-15] freeSceneBitmaps() -- now function is global to work correct with callbacks fn spriteanim = ( local bm = GetLastRenderedImage copy:false -- a mini fix here (in case where the scene not rendered yet): if bm == undefined do bm = bitmap renderWidth renderHeight append spr bm sLength += bm.width sp_buff = bitmap sLength bm.height if spriteBuffer.displaySprite.enabled == false do spriteBuffer.displaySprite.enabled = true ) utility spriteBuffer "Sprite Buffer v.1.1" -- [2009-11-09] ( global sp_buff, spr = #(), sLength = 0 button apLastRenBmp "Append Last Rendered" width:120 button displaySprite "Display Result" width:120 enabled:false button clearSpBuffer "Clear Sprite Buffer" width:120 checkbutton autoAppend "Auto Append" width:120 group "About" ( label lb1 "Made especially for" hyperLink hl1 "www.ScriptSpot.com" address:"http://www.scriptspot.com" align:#center hyperLink hl2 "by Karabakalov (Anubis)" address:"http://project3d.narod.ru" align:#center ) on apLastRenBmp pressed do ( spriteanim() /* local bm = GetLastRenderedImage copy:false if bm == undefined do bm = bitmap renderWidth renderHeight append spr bm sLength += bm.width sp_buff = bitmap sLength bm.height if displaySprite.enabled == false then displaySprite.enabled = true */ ) on displaySprite pressed do ( pasteBitmap spr[1] sp_buff (box2 0 0 spr[1].width spr[1].height) [0,0] for b=2 to spr.count do pasteBitmap spr[b] sp_buff (box2 0 0 spr[b].width spr[b].height) [spr[b].width*(b-1),0] display sp_buff ) on clearSpBuffer pressed do ( if spr.count > 0 then spr = #() displaySprite.enabled = false free bm freeSceneBitmaps() sLength = 0 ) on autoAppend changed state do ( if state == on then ( callbacks.removeScripts id:#spriteanim_ID callbacks.addScript #postRenderFrame "spriteanim()" id:#spriteanim_ID ) else callbacks.removeScripts id:#spriteanim_ID ) on spriteBuffer open do gc() on spriteBuffer close do (freeSceneBitmaps() ; free bm) ) -- another fix: define the function again after the utility fn spriteanim = ( local bm = GetLastRenderedImage copy:false -- a mini fix here (in case where the scene not rendered yet): if bm == undefined do bm = bitmap renderWidth renderHeight append spr bm sLength += bm.width sp_buff = bitmap sLength bm.height if spriteBuffer.displaySprite.enabled == false do spriteBuffer.displaySprite.enabled = true )