grunk/src/equipment/point_spray/point_spray.gd

25 lines
633 B
GDScript3
Raw Normal View History

class_name PointSpray extends Spray
## Simple single-point spraygun
@export var spray_scale := 16.0
@onready var raycast: RayCast3D = %RayCast3D
@onready var spray_effect: MeshInstance3D = %SprayEffect
func fire() -> void:
if raycast.is_colliding():
var collider := raycast.get_collider()
if collider is GunkBody:
var point := raycast.get_collision_point()
var point_scale := sqrt(point.distance_to(global_position)) * spray_scale
(collider as GunkBody).paint_continuous(
point, raycast.get_collision_normal(), point_scale
)
spray_effect.visible = true
func idle() -> void:
spray_effect.visible = false