76 lines
1.8 KiB
Plaintext
76 lines
1.8 KiB
Plaintext
//I DID NOT MAKE THIS LOL
|
|
//https://marketplace.yoyogames.com/assets/1423/advanced-circle-drawing
|
|
|
|
|
|
|
|
/// @description draw_circle_curve(x,y,r,bones,ang,angadd,width,outline)
|
|
/// @param x
|
|
/// @param y
|
|
/// @param r
|
|
/// @param bones
|
|
/// @param ang
|
|
/// @param angadd
|
|
/// @param width
|
|
/// @param outline
|
|
function draw_circle_curve(argument0, argument1, argument2, argument3, argument4, argument5, argument6, argument7) {
|
|
|
|
/*
|
|
x,y — Center of circle.
|
|
r — Radius.
|
|
bones — Amount of bones. More bones = more quality, but less speed. Minimum — 3.
|
|
ang — Angle of first circle's point.
|
|
angadd — Angle of last circle's point (relative to ang).
|
|
width — Width of circle (may be positive or negative).
|
|
outline — 0 = curve, 1 = sector.
|
|
*/
|
|
|
|
var xx,yy,R,B,A,Aa,W,a,lp,lm,dp,dm,B2,AAa,Wh,Out;
|
|
xx=argument0
|
|
yy=argument1
|
|
R=argument2
|
|
B=max(3,argument3)
|
|
A=argument4
|
|
Aa=argument5
|
|
W=argument6
|
|
Out=argument7
|
|
|
|
a=Aa/B
|
|
Wh=W/2
|
|
lp=R+Wh
|
|
lm=R-Wh
|
|
AAa=A+Aa
|
|
if Out
|
|
{
|
|
//OUTLINE
|
|
draw_primitive_begin(pr_trianglestrip) //Change to pr_linestrip, to see how it works.
|
|
draw_vertex(xx+lengthdir_x(lm,A),yy+lengthdir_y(lm,A)) //First point.
|
|
for(i=1; i<=B; i+=1)
|
|
{
|
|
dp=A+a*i
|
|
dm=dp-a
|
|
draw_vertex(xx+lengthdir_x(lp,dm),yy+lengthdir_y(lp,dm))
|
|
draw_vertex(xx+lengthdir_x(lm,dp),yy+lengthdir_y(lm,dp))
|
|
}
|
|
draw_vertex(xx+lengthdir_x(lp,AAa),yy+lengthdir_y(lp,AAa))
|
|
draw_vertex(xx+lengthdir_x(lm,AAa),yy+lengthdir_y(lm,AAa)) //Last two points to make circle look right.
|
|
//OUTLINE
|
|
}
|
|
else
|
|
{
|
|
//SECTOR
|
|
draw_primitive_begin(pr_trianglefan) //Change to pr_linestrip, to see how it works.
|
|
draw_vertex(xx,yy) //First point in the circle's center.
|
|
for(i=1; i<=B; i+=1)
|
|
{
|
|
dp=A+a*i
|
|
dm=dp-a
|
|
draw_vertex(xx+lengthdir_x(lp,dm),yy+lengthdir_y(lp,dm))
|
|
}
|
|
draw_vertex(xx+lengthdir_x(lp,AAa),yy+lengthdir_y(lp,AAa)) //Last point.
|
|
//SECTOR
|
|
}
|
|
draw_primitive_end()
|
|
|
|
|
|
}
|