grunk/src/equipment/point_spray/point_spray.gd

24 lines
741 B
GDScript3
Raw Normal View History

class_name PointSpray extends Spray
## Simple single-point spraygun
2025-03-09 16:40:19 -06:00
@export var spray_scale := 1.5
@export var damage := 0.3334
2025-03-06 14:57:57 -07:00
@onready var laser: LaserCast = %LaserCast
2025-03-29 12:31:23 -06:00
@onready var spray_sfx: SpraySFX = %SpraySFX
func _spray() -> void:
2025-03-06 14:57:57 -07:00
if laser.is_colliding():
2025-03-29 12:31:23 -06:00
spray_sfx.activate()
spray_sfx.set_angle_from_normal(laser.get_collision_normal())
2025-03-29 12:31:23 -06:00
2025-03-06 14:57:57 -07:00
var collider := laser.get_collider()
var gunk_component := Gunkable.get_component(collider)
if gunk_component:
2025-03-06 14:57:57 -07:00
var point := laser.get_collision_point()
var point_scale := point.distance_to(global_position) * spray_scale
gunk_component.paint_continuous(point, laser.get_collision_normal(), point_scale)
if collider is Sprayable:
(collider as Sprayable).hit(damage)