class_name ChartTrack extends Resource @export var track_id: StringName = &"" @export var track_type: StringName = &"" @export var events: Array = [] @export var time_phase_mask: StringName = &"both" func sorted_events() -> Array: var result: Array = [] for event in events: if event is Resource: _apply_track_time_phase_mask(event) result.append(event) result.sort_custom(func(a: Resource, b: Resource) -> bool: return float(a.call("beat_position")) < float(b.call("beat_position")) ) return result func _apply_track_time_phase_mask(event: Resource) -> void: if time_phase_mask.is_empty() or time_phase_mask == &"both": return var event_mask := StringName(str(event.get("time_phase_mask"))) if event_mask.is_empty() or event_mask == &"both": event.set("time_phase_mask", time_phase_mask)