grunk/src/equipment/point_spray/point_spray.gd

32 lines
885 B
GDScript3
Raw Normal View History

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