Advertisement
Guest User

Untitled

a guest
May 27th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /// @func draw_sprite_skew_ext()
  2. /// @arg sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha,image_xskew,image_yskew
  3.  
  4. var sprite   = argument0;
  5. var index    = argument1;
  6. var xx       = argument2;
  7. var yy       = argument3;
  8. var xscale   = argument4;
  9. var yscale   = argument5;
  10. var cosAngle = cos(degtorad(argument6));
  11. var sinAngle = sin(degtorad(argument6));
  12. var tint     = argument7;
  13. var alpha    = argument8;
  14. var hskew    = argument9;
  15. var vskew    = argument10;
  16.  
  17. // Calculate common operations
  18. var sprTex    = sprite_get_texture(sprite, index);
  19. var sprWidth  = sprite_get_width(sprite);
  20. var sprHeight = sprite_get_height(sprite);
  21. var sprXOrig  = sprite_get_xoffset(sprite);
  22. var sprYOrig  = sprite_get_yoffset(sprite);
  23.  
  24. var tempX, tempY, tempDir, tempDist;
  25.  
  26. // Begin drawing primitive
  27. draw_primitive_begin_texture(pr_trianglestrip, sprTex);
  28.  
  29. // Top-left corner
  30. tempX = (-sprXOrig + (sprYOrig / sprHeight) * hskew) * xscale;
  31. tempY = (-sprYOrig + (sprXOrig / sprWidth) * -vskew) * yscale;
  32. draw_vertex_texture_color(xx + tempX * cosAngle - tempY * sinAngle, yy + tempX * sinAngle + tempY * cosAngle, 0, 0, tint, alpha);
  33.  
  34. // Top-right corner
  35. tempX = (sprWidth + (sprYOrig / sprHeight) * hskew - sprXOrig) * xscale;
  36. tempY = (-sprYOrig + (1 - sprXOrig / sprWidth) * vskew) * yscale;
  37. draw_vertex_texture_color(xx + tempX * cosAngle - tempY * sinAngle, yy + tempX * sinAngle + tempY * cosAngle, 1, 0, tint, alpha);
  38.  
  39. // Bottom-left corner
  40. tempX = (-sprXOrig + (1 - sprYOrig / sprHeight) * -hskew) * xscale;
  41. tempY = (sprHeight - sprYOrig + (sprXOrig / sprWidth) * -vskew) * yscale;
  42. draw_vertex_texture_color(xx + tempX * cosAngle - tempY * sinAngle, yy + tempX * sinAngle + tempY * cosAngle, 0, 1, tint, alpha);
  43.  
  44. // Bottom-right corner
  45. tempX = (sprWidth - sprXOrig + (1 - sprYOrig / sprHeight) * -hskew) * xscale;
  46. tempY = (sprHeight - sprYOrig + (1 - sprXOrig / sprWidth) * vskew) * yscale;
  47. draw_vertex_texture_color(xx + tempX * cosAngle - tempY * sinAngle, yy + tempX * sinAngle + tempY * cosAngle, 1, 1, tint, alpha);
  48.  
  49. // Finish drawing primitive
  50. draw_primitive_end();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement