diff --git a/source/funkin/backend/system/Main.hx b/source/funkin/backend/system/Main.hx index 5c5af178..e3c29ca8 100644 --- a/source/funkin/backend/system/Main.hx +++ b/source/funkin/backend/system/Main.hx @@ -116,6 +116,7 @@ class Main extends Sprite #if UPDATE_CHECKING funkin.backend.system.updating.UpdateUtil.init(); #end + ShaderResizeFix.init(); Logs.init(); Paths.init(); ModsFolder.init(); diff --git a/source/funkin/backend/utils/ShaderResizeFix.hx b/source/funkin/backend/utils/ShaderResizeFix.hx new file mode 100644 index 00000000..2e18657b --- /dev/null +++ b/source/funkin/backend/utils/ShaderResizeFix.hx @@ -0,0 +1,34 @@ +package funkin.backend.utils; + +import openfl.display.Sprite; + +class ShaderResizeFix { + public static function init() { + FlxG.signals.gameResized.add((w:Int, h:Int) -> {fixSpritesShadersSizes();}); + } + + public inline static function fixSpritesShadersSizes() { + fixSpriteShaderSize(Main.instance); + if (FlxG.game != null) fixSpriteShaderSize(FlxG.game); + + if (FlxG.cameras == null) return; + for (cam in FlxG.cameras.list) { + @:privateAccess + if (cam != null && (cam._filters != null || cam._filters != [])) + fixSpriteShaderSize(cam.flashSprite); + } + } + + public inline static function fixSpriteShaderSize(sprite:Sprite) // Shout out to Ne_Eo for bringing this to my attention + { + if (sprite == null) return; + + @:privateAccess { + sprite.__cacheBitmap = null; + sprite.__cacheBitmapData = null; + sprite.__cacheBitmapData2 = null; + sprite.__cacheBitmapData3 = null; + sprite.__cacheBitmapColorTransform = null; + } + } +} \ No newline at end of file