class_name CutsceneWhileEvent extends "res://scripts/Cutscene/CutsceneEvent.gd" var events:Array[CutsceneEvent] = [] var callback:Callable var current:int = 0 func _init(callback:Callable, evt:Array[CutsceneEvent]) -> void: super._init(); self.events = evt; self.callback = callback; func shouldLoop() -> bool: return self.callback.call(self) func update(delta:float) -> void: if self.current >= self.events.size(): return; var evt = self.events[self.current] if !evt.started: evt.start() evt.started = true evt.update(delta) if evt.isDone(): evt.end() self.current += 1 if self.current < self.events.size(): return if !self.shouldLoop(): return self.current = 0 for event in self.events: event.reset() func isDone() -> bool: if self.shouldLoop(): return false; return self.current >= self.events.size();