diff --git a/src/kiss_flixel/GroupTools.hx b/src/kiss_flixel/GroupTools.hx new file mode 100644 index 0000000..91cfd69 --- /dev/null +++ b/src/kiss_flixel/GroupTools.hx @@ -0,0 +1,12 @@ +package kiss_flixel; + +import kiss.Prelude; +import kiss.List; +import flixel.FlxObject; +import flixel.FlxState; +import flixel.math.FlxRect; +import flixel.math.FlxPoint; +import flixel.group.FlxGroup; + +@:build(kiss.Kiss.build()) +class GroupTools {} diff --git a/src/kiss_flixel/GroupTools.kiss b/src/kiss_flixel/GroupTools.kiss new file mode 100644 index 0000000..941e538 --- /dev/null +++ b/src/kiss_flixel/GroupTools.kiss @@ -0,0 +1,18 @@ +(function :FlxRect calculateBounds <>[:FlxObject T] [:FlxTypedGroup group &opt :Float margin] + (unless margin (set margin 0)) + (let [&mut minX 0 + &mut maxX 0 + &mut minY 0 + &mut maxY 0 + r (new FlxRect)] + + (group.forEach ->object + (let [bounds (object.getRotatedBounds r)] + (set minX (min minX bounds.left)) + (set minY (min minY bounds.top)) + (set maxX (max maxX bounds.right)) + (set maxY (max maxY bounds.bottom)))) + + (r.fromTwoPoints + (new FlxPoint (- minX margin) (- minY margin)) + (new FlxPoint (+ maxX margin) (+ maxY margin))))) \ No newline at end of file