dp-konzultace/addons/simple-portal-system/scripts/line_renderer.gd
2025-03-04 21:51:27 +01:00

43 lines
906 B
GDScript

"""
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()