tool extends Node class_name GEUtils static func get_pixels_in_line(from: Vector2, to: Vector2): var dx = to[0] - from[0] var dy = to[1] - from[1] var nx = abs(dx) var ny = abs(dy) var signX = sign(dx) var signY = sign(dy) var p = from var points : Array = [p] var ix = 0 var iy = 0 while ix < nx || iy < ny: if (1 + (ix << 1)) * ny < (1 + (iy << 1)) * nx: p[0] += signX ix +=1 else: p[1] += signY iy += 1 points.append(p) return points static func to_1D_v(p, w) -> int: return p.x + p.y * w static func to_1D(x, y, w) -> int: return x + y * w static func to_2D(idx, w) -> Vector2: var p = Vector2() p.x = int(idx) % int(w) p.y = int(idx / w) return p static func color_from_array(color_array): var r = color_array[0] var g = color_array[1] var b = color_array[2] var a = color_array[3] return Color(r, g, b, a) static func random_color(): return Color(randf(), randf(), randf()) static func random_color_alt(): var rand = randi() % 6 match rand: #red 0: return Color.red #blue 1: return Color.blue #green 2: return Color.green #orange 3: return Color.orange #yellow 4: return Color.yellow #purple 5: return Color.purple static func get_line_string(file, number): return file.get_as_text().split("\n")[number - 1].strip_edges() static func printv(variable): var stack = get_stack()[get_stack().size() - 1] var line = stack.line var source = stack.source var file = File.new() file.open(source, File.READ) var line_string = get_line_string(file, line) file.close() var left_p = line_string.find("(") var left_p_string = line_string.right(left_p + 1) var right_p = left_p_string.find(")") var variable_name = left_p_string.left(right_p) print("%s: %s" % [variable_name, variable])