48 lines
1.0 KiB
GDScript
48 lines
1.0 KiB
GDScript
@tool
|
|
extends Node2D
|
|
class_name Circle2D
|
|
|
|
@export var color: Color = Color(1.0, 1.0, 1.0) :
|
|
set(new_color):
|
|
if color == new_color:
|
|
return
|
|
color = new_color
|
|
queue_redraw()
|
|
@export var radius: float = 10.0 :
|
|
set(new_radius):
|
|
if radius == new_radius:
|
|
return
|
|
radius = new_radius
|
|
queue_redraw()
|
|
@export var filled: bool = false :
|
|
set(new_filled):
|
|
if filled == new_filled:
|
|
return
|
|
filled = new_filled
|
|
queue_redraw()
|
|
@export var line_width: float = -1.0 :
|
|
set(new_line_width):
|
|
if line_width == new_line_width:
|
|
return
|
|
line_width = new_line_width
|
|
queue_redraw()
|
|
@export var antialiased: bool = false :
|
|
set(new_antialiased):
|
|
if antialiased == new_antialiased:
|
|
return
|
|
antialiased = new_antialiased
|
|
queue_redraw()
|
|
@export var detail: int = 30 :
|
|
set(new_detail):
|
|
if detail == new_detail:
|
|
return
|
|
detail = new_detail
|
|
queue_redraw()
|
|
|
|
|
|
func _draw() -> void:
|
|
if filled:
|
|
draw_circle(Vector2.ZERO, radius, color)
|
|
else:
|
|
draw_arc(Vector2.ZERO, radius, 0, TAU, detail, color, line_width, antialiased)
|