generated from mstar/godot-template
64 lines
1.9 KiB
GDScript3
64 lines
1.9 KiB
GDScript3
|
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)
|