REM *********************************************** REM Title: Sprite Clipping REM Author: Phaelax REM Downloaded from: http://dbcc.zimnox.com/ REM *********************************************** REM ****************************************** REM Project: Sprite Clipping REM Author: Phaelax REM Created: Wednesday, September 18, 2013 REM ****************************************** rem make a test image box 1, 1, 400, 400, rgb(255,255,0),rgb(0,0,255),rgb(0,255,0),rgb(255,0,0) get image 1, 1, 1, 400, 400 rem create a sprite sprite 1, x, y, 1 sync on do cls x = mousex()-200 y = mousey()-200 sprite 1, x, y, 1 clipSprite(1, 200,200,500,500) outline(199,199,500,500) print screen fps() sync loop function clipSprite(id, x1, y1, x2, y2) rem get sprite's original dimensions img = sprite image(id) w = image width(img) h = image height(img) rem sprite's current position x = sprite x(id) y = sprite y(id) rem offsets ox = 0 oy = 0 rem top of sprite if y < y1 h1 = y1 - y oy = -(y1-y) endif rem bottom of sprite if y+h > y2 h2 = (y+h) - y2 endif rem left side of sprite if x < x1 w1 = x1 - x ox = -(x1-x) endif rem right side of sprite if x+w > x2 w2 = (x+w) - x2 endif rem calculate new size of sprite newHeight = h - h1 - h2 av# = h1 / (h+0.0) bv# = 1 - h2 / (h+0.0) newWidth = w - w1 - w2 au# = w1 / (w+0.0) bu# = 1 - w2 / (w+0.0) rem sprite size cannot be <= 0 if newWidth > 0 and newHeight > 0 rem update sprite texture coords set sprite texture coord 1, 0, au#, av# set sprite texture coord 1, 1, bu#, av# set sprite texture coord 1, 2, au#, bv# set sprite texture coord 1, 3, bu#, bv# rem resize sprite size sprite id, newWidth, newHeight offset sprite id, ox, oy show sprite id else hide sprite id endif endfunction function outline(x1, y1, x2, y2) line x1, y1, x2, y1 line x1, y2, x2, y2 line x1, y1, x1, y2 line x2, y1, x2, y2 endfunction