godot-wild-jam-66/npc/RaycastVis.gd

29 lines
809 B
GDScript

class_name RaycastVis
extends MeshInstance3D
var target: = Vector3.ZERO
var colour: = Color.BLACK
@onready var mat: = StandardMaterial3D.new()
@onready var ball: = $Ball
func _ready() -> void:
mesh = ImmediateMesh.new()
mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
ball.mesh = ball.mesh.duplicate()
ball.mesh.surface_set_material(0, mat)
func _process(delta: float) -> void:
mat.albedo_color = colour
var target_local: = global_transform.inverse() * target
var m: ImmediateMesh = mesh as ImmediateMesh
m.clear_surfaces()
m.surface_begin(Mesh.PRIMITIVE_LINES, mat)
m.surface_add_vertex(Vector3.ZERO)
m.surface_add_vertex(target_local)
m.surface_end()
ball.position = target_local
func update_vis(target: Vector3, colour: Color) -> void:
self.target = target
self.colour = colour