From a8fd35b041b5e5f35cac1d8b9f1be2daf164ea48 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Tue, 26 Jul 2022 17:50:02 +0000 Subject: [PATCH] GroupTools.bringToFront() and sendToBack(). Close #97 --- src/kiss_flixel/GroupTools.kiss | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/kiss_flixel/GroupTools.kiss b/src/kiss_flixel/GroupTools.kiss index 941e538..38473d7 100644 --- a/src/kiss_flixel/GroupTools.kiss +++ b/src/kiss_flixel/GroupTools.kiss @@ -1,3 +1,18 @@ +(function :Void clearNulls <>[:FlxObject T] [:FlxTypedGroup group] + (while (contains group.members null) + (group.members.splice (group.members.lastIndexOf null) 1))) + +// Because FlxGroup will fill elements into null gaps in groups, this method inefficiently clears null gaps +(function :Void bringToFront <>[:FlxObject T] [:FlxTypedGroup group :T obj] + (group.remove obj true) + (clearNulls group) + (group.add obj)) + +// Because FlxGroup will fill elements into null gaps in groups, this method throws an error when a null gap is present +(function :Void sendToBack <>[:FlxObject T] [:FlxTypedGroup group :T obj] + (group.remove obj true) + (group.insert 0 obj)) + (function :FlxRect calculateBounds <>[:FlxObject T] [:FlxTypedGroup group &opt :Float margin] (unless margin (set margin 0)) (let [&mut minX 0