""" Asset: Godot Simple Portal System File: linerenderer.gd Description: Line drawing helper based on ImmediateMesh. Repository: https://github.com/Donitzo/godot-simple-portal-system License: CC0 License """ extends MeshInstance3D class_name LineRenderer @export var material: Material var _lines: Array var _dirty: bool func _ready() -> void: mesh = ImmediateMesh.new() func add_line(from: Vector3, to: Vector3, color: Color = Color.WHITE) -> void: _lines.push_back([from, to, color]) _dirty = true func clear_lines() -> void: _lines.clear() _dirty = true func _process(_delta: float) -> void: if not _dirty: return _dirty = false mesh.clear_surfaces() mesh.surface_begin(PrimitiveMesh.PRIMITIVE_LINES, material) for line in _lines: mesh.surface_set_color(line[2]) mesh.surface_add_vertex(to_local(line[0])) mesh.surface_add_vertex(to_local(line[1])) mesh.surface_end()