42 lines
1.1 KiB
GDScript3
42 lines
1.1 KiB
GDScript3
|
tool
|
||
|
extends Control
|
||
|
|
||
|
export var color = Color()
|
||
|
export var size:int = 16
|
||
|
export var zoom = 0
|
||
|
export var offset = Vector2(0, 0)
|
||
|
|
||
|
|
||
|
func _enter_tree():
|
||
|
set_process(true)
|
||
|
|
||
|
|
||
|
func _draw():
|
||
|
if size == 0:
|
||
|
size = 1
|
||
|
|
||
|
var temp_size = size + zoom
|
||
|
|
||
|
var wrap_offset = Vector2(wrapf(offset.x, 0, temp_size), wrapf(offset.y, 0, temp_size))
|
||
|
|
||
|
var ceil_x = ceil(rect_size.x / temp_size)
|
||
|
var ceil_y = ceil(rect_size.y / temp_size)
|
||
|
|
||
|
for i in ceil_y:
|
||
|
var start_x = Vector2(0, (i * temp_size) + wrap_offset.y)
|
||
|
var end_x = Vector2(rect_size.x, (i * temp_size) + wrap_offset.y)
|
||
|
# var end_x = Vector2(int(rect_size.x) + size - int(rect_size.x) % size, (i * temp_size) + wrap_offset.y)
|
||
|
draw_line(start_x, end_x, color, 1)
|
||
|
|
||
|
for i in ceil_x:
|
||
|
var start_y = Vector2((i * temp_size) + wrap_offset.x, 0)
|
||
|
var end_y = Vector2((i * temp_size) + (wrap_offset.x), rect_size.y)
|
||
|
# var end_y = Vector2((i * temp_size) + (wrap_offset.x), int(rect_size.y) + size - int(rect_size.y) % size)
|
||
|
draw_line(start_y, end_y, color, 1)
|
||
|
|
||
|
|
||
|
func _process(delta):
|
||
|
if not is_visible_in_tree():
|
||
|
return
|
||
|
update()
|