diff --git a/source/funkin/backend/FlxAnimate.hx b/source/funkin/backend/FlxAnimate.hx index c2b6e8c6..e22cb867 100644 --- a/source/funkin/backend/FlxAnimate.hx +++ b/source/funkin/backend/FlxAnimate.hx @@ -15,7 +15,7 @@ class FlxAnimate extends flxanimate.FlxAnimate { for (camera in cameras) { rMatrix.identity(); - rMatrix.translate(-limb.offset.x, -limb.offset.y); + limb.prepareMatrix(rMatrix, FlxFrameAngle.ANGLE_0, _checkFlipX() != camera.flipX, _checkFlipY() != camera.flipY); rMatrix.concat(_rMatrix); if (!camera.visible || !camera.exists || !limbOnScreen(limb, _rMatrix, camera)) return; diff --git a/source/funkin/game/NoteGroup.hx b/source/funkin/game/NoteGroup.hx index 98b6477e..9c974a13 100644 --- a/source/funkin/game/NoteGroup.hx +++ b/source/funkin/game/NoteGroup.hx @@ -34,10 +34,16 @@ class NoteGroup extends FlxTypedGroup { return FlxSort.byValues(FlxSort.DESCENDING, n1.strumTime, n2.strumTime); }); } + + @:dox(hide) public var __forcedSongPos:Null = null; + + @:dox(hide) private inline function __getSongPos() + return __forcedSongPos == null ? Conductor.songPosition : __forcedSongPos; + public override function update(elapsed:Float) { i = length-1; __loopSprite = null; - __time = Conductor.songPosition; + __time = __getSongPos(); while(i >= 0) { __loopSprite = members[i--]; if (__loopSprite == null || !__loopSprite.exists || !__loopSprite.active) { @@ -58,7 +64,7 @@ class NoteGroup extends FlxTypedGroup { i = length-1; __loopSprite = null; - __time = Conductor.songPosition; + __time = __getSongPos(); while(i >= 0) { __loopSprite = members[i--]; if (__loopSprite == null || !__loopSprite.exists || !__loopSprite.visible) @@ -81,7 +87,7 @@ class NoteGroup extends FlxTypedGroup { public override function forEach(noteFunc:Note->Void, recursive:Bool = false) { i = length-1; __loopSprite = null; - __time = Conductor.songPosition; + __time = __getSongPos(); var oldCur = __currentlyLooping; __currentlyLooping = true; diff --git a/source/funkin/menus/PauseSubState.hx b/source/funkin/menus/PauseSubState.hx index ff45f20a..7101486c 100644 --- a/source/funkin/menus/PauseSubState.hx +++ b/source/funkin/menus/PauseSubState.hx @@ -8,6 +8,7 @@ import funkin.backend.scripting.Script; import funkin.backend.scripting.events.MenuChangeEvent; import funkin.backend.scripting.events.NameEvent; import funkin.backend.scripting.events.PauseCreationEvent; +import funkin.backend.system.Conductor; import funkin.backend.utils.FunkinParentDisabler; import funkin.editors.charter.Charter; import funkin.menus.StoryMenuState; @@ -162,6 +163,9 @@ class PauseSubState extends MusicBeatSubstate PlayState.resetSongInfos(); if (Charter.instance != null) Charter.instance.__clearStatics(); + // prevents certain notes to disappear early when exiting - Nex + game.strumLines.forEachAlive(function(grp) grp.notes.__forcedSongPos = Conductor.songPosition); + CoolUtil.playMenuSong(); FlxG.switchState(PlayState.isStoryMode ? new StoryMenuState() : new FreeplayState()); }