extends Control var values: PackedFloat32Array = [] var accent := Color.WHITE var value_range := Vector2(0.0, 100.0) func set_values(next_values: Array, next_accent: Color, next_range := Vector2(0.0, 100.0)) -> void: values = PackedFloat32Array(next_values) accent = next_accent value_range = next_range queue_redraw() func _draw() -> void: if values.size() < 2: if values.size() == 1: draw_circle(Vector2(size.x - 4.0, size.y * 0.5), 3.0, accent) return var span: float = maxf(0.0001, value_range.y - value_range.x) var points := PackedVector2Array() var count: int = values.size() for index in range(count): var x: float = lerpf(0.0, size.x, float(index) / float(count - 1)) var ratio: float = clampf((values[index] - value_range.x) / span, 0.0, 1.0) var y: float = lerpf(size.y, 0.0, ratio) points.append(Vector2(x, y)) draw_polyline(points, accent, 2.0, true) draw_circle(points[-1], 3.0, accent)