class_name PointSpray extends Spray ## Simple single-point spraygun @export var spray_scale := 1.5 @onready var laser: LaserCast = %LaserCast @onready var spray_effect: MeshInstance3D = %SprayEffect @onready var beam_particles_1: GPUParticles3D = $BeamParticles1 @onready var beam_particles_2: GPUParticles3D = $BeamParticles2 func _fire() -> void: if laser.is_colliding(): var collider := laser.get_collider() if collider is GunkBody: var point := laser.get_collision_point() var point_scale := point.distance_to(global_position) * spray_scale (collider as GunkBody).paint_continuous( point, laser.get_collision_normal(), point_scale ) spray_effect.visible = true beam_particles_1.emitting = true beam_particles_2.emitting = true func _idle() -> void: spray_effect.visible = false beam_particles_1.emitting = false beam_particles_2.emitting = false