for background shaders, make other camera bgs transparent

This commit is contained in:
2024-04-01 14:19:45 -06:00
parent e31c977975
commit 4f7062efe5

View File

@@ -116,14 +116,25 @@
(let [:Array<BitmapFilter> filters (for shader shaders (new ShaderFilter shader))]
(camera.setFilters filters)))
(var :Map<FlxCamera,FlxColor> cameraBgColors (new Map))
(function addBackgroundShaders [:Array<FlxShader> shaders]
(let [:flixel.FlxCamera camera (new flixel.FlxCamera)
cameras (FlxG.cameras.list.copy)
defaults (.copy (Reflect.field FlxG.cameras "defaults"))]
(set camera.bgColor flixel.util.FlxColor.TRANSPARENT)
(set camera.bgColor FlxColor.TRANSPARENT)
(addShaderFilter camera shaders)
(doFor _camera cameras
(dictSet cameraBgColors _camera _camera.bgColor)
(set _camera.bgColor flixel.util.FlxColor.TRANSPARENT)
(FlxG.cameras.remove _camera false))
(FlxG.cameras.add camera false)
(doFor _camera cameras
(FlxG.cameras.add _camera (defaults.contains _camera)))))
(FlxG.cameras.add _camera (defaults.contains _camera)))))
(function removeBackgroundShaders []
(let [cameras (FlxG.cameras.list.copy)]
// Destroy the background filter camera
(FlxG.cameras.remove (cameras.shift) true)
(doFor _camera cameras
(set _camera.bgColor (dictGet cameraBgColors _camera))
(cameraBgColors.remove _camera))))