diff --git a/source/funkin/system/FlxAnimate.hx b/source/funkin/system/FlxAnimate.hx index 961fac19..aca7a645 100644 --- a/source/funkin/system/FlxAnimate.hx +++ b/source/funkin/system/FlxAnimate.hx @@ -45,7 +45,7 @@ class FlxAnimate extends flxanimate.FlxAnimate { } rMatrix.scale(scale.x, scale.y); - if (bakedRotationAngle <= 0) + if (!matrixExposed && bakedRotationAngle <= 0) { updateTrig(); @@ -56,7 +56,14 @@ class FlxAnimate extends flxanimate.FlxAnimate { else rMatrix.a = rMatrix.d = 0.7 / camera.zoom; - rMatrix.concat(@:privateAccess flxanimate.FlxAnimate._skewMatrix); + if (matrixExposed) + { + rMatrix.concat(transformMatrix); + } + else + { + rMatrix.concat(@:privateAccess flxanimate.FlxAnimate._skewMatrix); + } _point.addPoint(origin); if (isPixelPerfectRender(camera)) diff --git a/source/funkin/system/FunkinSprite.hx b/source/funkin/system/FunkinSprite.hx index 6f0695f8..57ec8283 100644 --- a/source/funkin/system/FunkinSprite.hx +++ b/source/funkin/system/FunkinSprite.hx @@ -51,6 +51,8 @@ class FunkinSprite extends FlxSkewedSprite implements IBeatReceiver implements I spr.scale.set(source.scale.x, source.scale.y); spr.scrollFactor.set(source.scrollFactor.x, source.scrollFactor.y); spr.skew.set(source.skew.x, source.skew.y); + spr.transformMatrix = source.transformMatrix; + spr.matrixExposed = source.matrixExposed; } return spr; } @@ -149,6 +151,8 @@ class FunkinSprite extends FlxSkewedSprite implements IBeatReceiver implements I animateAtlas.shader = shader; animateAtlas.antialiasing = antialiasing; animateAtlas.skew = skew; + animateAtlas.transformMatrix = transformMatrix; + animateAtlas.matrixExposed = matrixExposed; } }