grunk/src/world/gunk_body/draw_controller.gd

31 lines
588 B
GDScript3
Raw Normal View History

class_name DrawController extends Control
2025-03-02 13:16:40 -07:00
## Emitted the frame after at least one paint operation was done.
signal painted
var _draw_queue: Array[Callable] = []
2025-03-02 13:16:40 -07:00
var _dirty := false
2025-03-08 18:58:15 -07:00
func clear(color: Color) -> void:
queue_draw(func() -> void: draw_rect(Rect2(0, 0, size.x, size.y), color, true))
func queue_draw(op: Callable) -> void:
_draw_queue.push_back(op)
_dirty = true
func _draw() -> void:
while _draw_queue:
var op: Callable = _draw_queue.pop_front()
op.call()
func _process(_delta: float) -> void:
if _dirty:
queue_redraw()
_dirty = false
2025-03-02 13:16:40 -07:00
painted.emit()