Adjusted directory structure for clarity.

This commit is contained in:
Henry Faber 2026-06-27 13:28:38 +01:00
parent 3303d937fd
commit 6c5a0a0bae
5 changed files with 3 additions and 2 deletions

View file

@ -0,0 +1,34 @@
class_name EffectComponent
extends Node
## The node this component applies effects to.
## If left null, defaults to the first parent CanvasItem.
@export var target_node: Node = null
var active_effects: Array[BaseEffect] = []
func _ready() -> void:
if target_node == null:
# Auto-resolve to the parent if nothing is set
target_node = get_parent()
func _process(delta: float) -> void:
if target_node == null:
return
# Process all active effects backwards so we can safely remove finished ones
for i in range(active_effects.size() - 1, -1, -1):
var effect = active_effects[i]
effect.process(delta, target_node)
if effect.is_finished():
remove_effect(effect)
func apply_effect(effect: BaseEffect) -> void:
var instance = effect.duplicate()
instance.start(target_node)
active_effects.append(instance)
func remove_effect(effect: BaseEffect) -> void:
effect.stop(target_node)
active_effects.erase(effect)