Advertisement
Blokatt

draw_path_ext

May 10th, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ///draw_path_ext(path, x, y, angle, centerX, centerY, scale)
  2. /***************************************************
  3.   Path renderer with rotation and scaling support.
  4.   argument 0 - path id
  5.   argument 1 - x
  6.   argument 2 - y
  7.   argument 3 - angle
  8.   [argument 4] - pivot x
  9.   [argument 5] - pivot y
  10.   [argument 6] - scale
  11.   returns: nothing
  12.  
  13.   By Blokatt (blokatt.net)
  14.  ***************************************************/
  15. var path = argument[0];
  16. var xx = argument[1];
  17. var yy = argument[2];
  18. var angle = degtorad(argument[3]);
  19. var centerX = 0;
  20. var centerY = 0;
  21. var scale = 1;
  22. var vertexCount = path_get_number(path);
  23. var distance = 0;
  24. var pointX, pointY, distX, distY, baseAngle;
  25.  
  26. if (argument_count > 4){
  27.    centerX = argument[4];
  28.    centerY = argument[5];
  29.    scale = argument[6];
  30. }
  31.  
  32. draw_primitive_begin(pr_linestrip);
  33. for (var i = 0; i < vertexCount; i++){
  34.     pointX = path_get_point_x(path, i);
  35.     pointY = path_get_point_y(path, i);
  36.     distX = pointX - centerX;
  37.     distY = pointY - centerY;
  38.     distance = sqrt(distX * distX + distY * distY) * scale;
  39.     baseAngle = arctan2(pointY - centerY, pointX - centerX);
  40.     draw_vertex(xx + cos(baseAngle + angle) * distance, yy - sin(baseAngle + angle) * distance);
  41. }
  42. if (path_get_closed(path)){
  43.     pointX = path_get_point_x(path, 0);
  44.     pointY = path_get_point_y(path, 0);
  45.     distX = pointX - centerX;
  46.     distY = pointY - centerY;
  47.     distance = sqrt(distX * distX + distY * distY) * scale;
  48.     baseAngle = arctan2(pointY - centerY, pointX - centerX);
  49.     draw_vertex(xx + cos(baseAngle + angle) * distance, yy - sin(baseAngle + angle) * distance);
  50. }
  51. draw_primitive_end();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement