From 9671177e6438f32244b8e6bc509ca9efba2645ce Mon Sep 17 00:00:00 2001 From: Yoshman29 Date: Thu, 20 Oct 2022 16:15:18 +0200 Subject: [PATCH] hold up --- buildnumber.txt | 2 +- source/funkin/game/Note.hx | 30 +++++++++++++++++++++--------- source/funkin/game/Strum.hx | 9 +++++++-- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/buildnumber.txt b/buildnumber.txt index bc6a950b..c8a110e7 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -569 \ No newline at end of file +621 \ No newline at end of file diff --git a/source/funkin/game/Note.hx b/source/funkin/game/Note.hx index d0dfdae9..ea68f85e 100644 --- a/source/funkin/game/Note.hx +++ b/source/funkin/game/Note.hx @@ -185,23 +185,35 @@ class Note extends FlxSprite override function draw() { if (angleOffsets && Std.int(angle % 360) != 0) { + // get default values var oldOffset = FlxPoint.get(offset.x, offset.y); - // var oldOrigin = FlxPoint.get(origin.x, origin.y); - offset.set( - (Math.cos(angle / 180 * Math.PI) * offset.x) + (Math.sin(angle / 180 * Math.PI) * offset.y), - (Math.sin(angle / 180 * Math.PI) * offset.x) + (Math.cos(angle / 180 * Math.PI) * offset.y)); - // origin.set( - // (-Math.cos(angle / 180 * Math.PI) * origin.x) + (-Math.sin(angle / 180 * Math.PI) * origin.y), - // (-Math.sin(angle / 180 * Math.PI) * origin.x) + (-Math.cos(angle / 180 * Math.PI) * origin.y)); + // get offset pos without origin + var pos = FlxPoint.get(offset.x - origin.x, offset.y - origin.y); + // updates sin and cos values for angle + updateTrig(); + var anglePos = FlxPoint.get( + (_cosAngle * pos.x) + (-_sinAngle * pos.y), + (-_sinAngle * pos.x) + (_cosAngle * pos.y)); + + // applies new values + x -= anglePos.x; + y -= anglePos.y; + offset.set(origin.x, origin.y); + + // draw super.draw(); + // reset values offset.set(oldOffset.x, oldOffset.y); - // origin.set(oldOrigin.x, oldOrigin.y); + x += anglePos.x; + y += anglePos.y; + // put flxpoints back in the recycling pool oldOffset.put(); - // oldOrigin.put(); + pos.put(); + anglePos.put(); return; } super.draw(); diff --git a/source/funkin/game/Strum.hx b/source/funkin/game/Strum.hx index 8be9a6d6..bf1ba1ad 100644 --- a/source/funkin/game/Strum.hx +++ b/source/funkin/game/Strum.hx @@ -40,7 +40,10 @@ class Strum extends FlxSprite { } } + public function updateNotePosition(daNote:Note) { + if (!daNote.exists) return; + var offset = FlxPoint.get(daNote.isSustainNote ? ((Note.swagWidth - daNote.width) / 2) : 0, (Conductor.songPosition - daNote.strumTime) * (0.45 * FlxMath.roundDecimal(PlayState.instance.scrollSpeed, 2))); var realOffset = FlxPoint.get(0, 0); if (daNote.isSustainNote) offset.y -= Note.swagWidth / 2; @@ -48,8 +51,10 @@ class Strum extends FlxSprite { var noteAngle = getNotesAngle(); daNote.angle = daNote.isSustainNote ? noteAngle : angle; if (Std.int(noteAngle % 360) != 0) { - realOffset.x = (Math.cos(noteAngle / 180 * Math.PI) * offset.x) + (Math.sin(noteAngle / 180 * Math.PI) * offset.y); - realOffset.y = (Math.sin(noteAngle / 180 * Math.PI) * offset.x) + (Math.cos(noteAngle / 180 * Math.PI) * offset.y); + var noteAngleCos = Math.cos(noteAngle / 180 * Math.PI); + var noteAngleSin = Math.sin(noteAngle / 180 * Math.PI); + realOffset.x = (noteAngleCos * offset.x) + (noteAngleSin * offset.y); + realOffset.y = (noteAngleSin * offset.x) + (noteAngleCos * offset.y); } else { realOffset.x = offset.x; realOffset.y = offset.y;