pokemon-base/addons/imjp94.yafsm/scenes/flowchart/FlowChartGrid.gd
2025-01-26 20:23:56 +01:00

64 lines
No EOL
1.9 KiB
GDScript

extends Control
var flowchart
func _ready():
flowchart = get_parent().get_parent()
queue_redraw()
# Original Draw in FlowChart.gd inspired by:
# https://github.com/godotengine/godot/blob/6019dab0b45e1291e556e6d9e01b625b5076cc3c/scene/gui/graph_edit.cpp#L442
func _draw():
self.position = flowchart.position
# Extents of the grid.
self.size = flowchart.size*100 # good with min_zoom = 0.5 e max_zoom = 2.0
var zoom = flowchart.zoom
var snap = flowchart.snap
# Origin of the grid.
var offset = -Vector2(1, 1)*10000 # good with min_zoom = 0.5 e max_zoom = 2.0
var corrected_size = size/zoom
var from = (offset / snap).floor()
var l = (corrected_size / snap).floor() + Vector2(1, 1)
var grid_minor = flowchart.grid_minor_color
var grid_major = flowchart.grid_major_color
var multi_line_vector_array: PackedVector2Array = PackedVector2Array()
var multi_line_color_array: PackedColorArray = PackedColorArray ()
# for (int i = from.x; i < from.x + len.x; i++) {
for i in range(from.x, from.x + l.x):
var color
if (int(abs(i)) % 10 == 0):
color = grid_major
else:
color = grid_minor
var base_ofs = i * snap
multi_line_vector_array.append(Vector2(base_ofs, offset.y))
multi_line_vector_array.append(Vector2(base_ofs, corrected_size.y))
multi_line_color_array.append(color)
# for (int i = from.y; i < from.y + len.y; i++) {
for i in range(from.y, from.y + l.y):
var color
if (int(abs(i)) % 10 == 0):
color = grid_major
else:
color = grid_minor
var base_ofs = i * snap
multi_line_vector_array.append(Vector2(offset.x, base_ofs))
multi_line_vector_array.append(Vector2(corrected_size.x, base_ofs))
multi_line_color_array.append(color)
draw_multiline_colors(multi_line_vector_array, multi_line_color_array, -1)