grunk/src/world/gunk_body/draw_controller.gd

43 lines
781 B
GDScript

class_name DrawController extends Control
var _draw_queue: Array[Callable] = []
var _dirty := false
var _clear := true
var _show_texture := true
@onready var mask_clear: ColorRect = %MaskClear
@onready var mask_texture: TextureRect = %MaskTexture
func clear(color: Color) -> void:
mask_clear.color = color
_clear = 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
# show clear rect for one frame
mask_clear.visible = _clear
_clear = false
mask_texture.visible = _show_texture
_show_texture = false
func _set_dirty() -> void:
_dirty = true