HOW DID WE NEVER NOTICE?? anyways im really happy on how everything came out :D more than a fix it also ended up like a rewrite!
58 lines
1.4 KiB
Haxe
58 lines
1.4 KiB
Haxe
package funkin.editors.charter;
|
|
|
|
import flixel.util.FlxSort;
|
|
import funkin.editors.charter.CharterBackdropGroup.EventBackdrop;
|
|
|
|
class CharterEventGroup extends FlxTypedGroup<CharterEvent> {
|
|
public var eventsBackdrop:EventBackdrop;
|
|
|
|
public var autoSort:Bool = true;
|
|
var __lastSort:Int = 0;
|
|
|
|
public override function update(elapsed:Float) {
|
|
filterEvents();
|
|
if (autoSort && members.length != __lastSort)
|
|
sortEvents();
|
|
|
|
super.update(elapsed);
|
|
}
|
|
|
|
public override function remove(v:CharterEvent, force:Bool = true):CharterEvent {
|
|
v.ID = -1;
|
|
return super.remove(v, force);
|
|
}
|
|
|
|
public override function draw() {
|
|
for (event in members) {
|
|
event.eventsBackdrop = eventsBackdrop;
|
|
event.snappedToGrid = true;
|
|
event.cameras = cameras;
|
|
}
|
|
super.draw();
|
|
}
|
|
|
|
public inline function sortEvents() {
|
|
__lastSort = members.length;
|
|
this.sort(sortEventsFilter);
|
|
updateEventsIDs();
|
|
updateEventsBackdrop();
|
|
}
|
|
|
|
public inline function updateEventsIDs()
|
|
for (i => n in members) n.ID = i;
|
|
|
|
public inline function updateEventsBackdrop()
|
|
for (event in members)
|
|
event.eventsBackdrop = eventsBackdrop;
|
|
|
|
public inline function filterEvents() {
|
|
for (event in members)
|
|
if (event.events.length == 0) {
|
|
remove(event, true);
|
|
event.kill();
|
|
}
|
|
}
|
|
|
|
public dynamic function sortEventsFilter(i:Int, e1:CharterEvent, e2:CharterEvent)
|
|
return FlxSort.byValues(FlxSort.ASCENDING, e1.step, e2.step);
|
|
} |