| 1 |
function draw_sprite_clip_ext(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) |
| 2 |
{ |
| 3 |
var s = arg0; |
| 4 |
var sw = sprite_get_width(s); |
| 5 |
var sh = sprite_get_height(s); |
| 6 |
var sx = sprite_get_xoffset(s); |
| 7 |
var sy = sprite_get_yoffset(s); |
| 8 |
var si = arg1; |
| 9 |
var _x = arg2; |
| 10 |
var _y = arg3; |
| 11 |
var mx = arg4; |
| 12 |
var my = arg5; |
| 13 |
var sc = arg6; |
| 14 |
var sa = arg7; |
| 15 |
var cx1 = arg8; |
| 16 |
var cy1 = arg9; |
| 17 |
var cx2 = cx1 + arg10; |
| 18 |
var cy2 = cy1 + arg11; |
| 19 |
var bx1 = _x - (sprite_get_xoffset(s) * mx); |
| 20 |
var by1 = _y - (sprite_get_yoffset(s) * my); |
| 21 |
var bx2 = bx1 + (sprite_get_width(s) * mx); |
| 22 |
var by2 = by1 + (sprite_get_height(s) * my); |
| 23 |
switch (rectangle_in_rectangle(bx1, by1, bx2, by2, cx1, cy1, cx2, cy2)) |
| 24 |
{ |
| 25 |
case 1: |
| 26 |
draw_sprite_ext(s, si, _x, _y, mx, my, 0, sc, sa); |
| 27 |
return true; |
| 28 |
case 2: |
| 29 |
if (mx == 0 || my == 0) |
| 30 |
return true; |
| 31 |
var lx1 = max(0, cx1 - bx1) / mx; |
| 32 |
var ly1 = max(0, cy1 - by1) / my; |
| 33 |
var lx2 = sw + (min(0, cx2 - bx2) / mx); |
| 34 |
var ly2 = sh + (min(0, cy2 - by2) / my); |
| 35 |
draw_sprite_part_ext(s, si, lx1, ly1, lx2 - lx1, ly2 - ly1, _x + ((lx1 - sx) * mx), _y + ((ly1 - sy) * my), mx, my, sc, sa); |
| 36 |
return true; |
| 37 |
} |
| 38 |
return false; |
| 39 |
} |