Skip to content

Instantly share code, notes, and snippets.

@bitsydoge
Last active September 26, 2021 21:04
Show Gist options
  • Save bitsydoge/67352184121c144bb361c8e9ff6a7dd6 to your computer and use it in GitHub Desktop.
Save bitsydoge/67352184121c144bb361c8e9ff6a7dd6 to your computer and use it in GitHub Desktop.
Easly generate circle as Polygon2D
tool
extends Polygon2D
class_name CirclePolygon2D
export (int, 3, 1024, 1) var points = 32 setget set_points
export (float, EXP, 0.1, 1024) var radius = 32.0 setget set_radius
export (bool) var regenerate = true setget set_regenerate
func set_regenerate(new):
if new == true:
_generate_circle()
else:
regenerate = false
func set_points(new):
if(points != new):
points = new
_generate_circle()
func set_radius(new):
if(radius != new):
radius = new
_generate_circle()
func _generate_circle():
var arr = PoolVector2Array([])
for i in points:
var phi = i * PI * 2.0 / points
var v = Vector2(sin(phi), cos(phi))
arr.push_back(v * radius)
polygon = arr
func _enter_tree():
if regenerate == true:
regenerate = false
_generate_circle()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment