facsimile-wing/scenes/effects/flash_effect.gd
2026-06-23 18:19:28 +01:00

27 lines
889 B
GDScript

class_name FlashEffect
extends BaseEffect
@export var flash_color: Color = Color.WHITE
@export var flash_speed: float = 10.0
var _timer: float = 0.0
var _original_material: Material
func start(target: Node) -> void:
_timer = 0.0
if target is CanvasItem:
_original_material = target.material
# Apply a ShaderMaterial that handles the flash
var flash_material = ShaderMaterial.new()
flash_material.shader = preload("res://shaders/flash.gdshader")
target.material = flash_material
func process(delta: float, target: Node) -> void:
_timer += delta
if target.material is ShaderMaterial:
var intensity = (sin(_timer * flash_speed) + 1.0) / 2.0
target.material.set_shader_parameter("flash_intensity", intensity)
func stop(target: Node) -> void:
if target is CanvasItem:
target.material = _original_material