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