28 lines
816 B
GDScript
28 lines
816 B
GDScript
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)
|