diff --git a/source/funkin/graphics/FlxSkewRepeatSprite.hx b/source/funkin/graphics/FlxSkewRepeatSprite.hx index 6f18c134..9c1e3d07 100644 --- a/source/funkin/graphics/FlxSkewRepeatSprite.hx +++ b/source/funkin/graphics/FlxSkewRepeatSprite.hx @@ -7,6 +7,7 @@ import openfl.display.BitmapData; /* TODO: add skew y support (_matrix.b) and fix problems with dynamically sized tiles + fix skew on angles other than 0 and 180 */ class FlxSkewRepeatSprite extends FlxRepeatSprite { @@ -66,7 +67,7 @@ class FlxSkewRepeatSprite extends FlxRepeatSprite { override function handleClipRect(tileFrame:FlxFrame, baseFrame:FlxFrame, tilePos:FlxPoint):Bool { final _draw = super.handleClipRect(tileFrame, baseFrame, tilePos); - if (_draw) offsetSkew(tileFrame, baseFrame); + if (_draw && wigglePower != 0) offsetSkew(tileFrame, baseFrame); return _draw; } } \ No newline at end of file diff --git a/source/funkin/graphics/FlxSpriteExt.hx b/source/funkin/graphics/FlxSpriteExt.hx index 13fdb1b8..5ee4c5fc 100644 --- a/source/funkin/graphics/FlxSpriteExt.hx +++ b/source/funkin/graphics/FlxSpriteExt.hx @@ -1,5 +1,6 @@ package funkin.graphics; +import flixel.addons.effects.FlxSkewedSprite; import flixel.util.FlxDestroyUtil; import flixel.math.FlxMatrix; import openfl.display.BitmapData; @@ -8,7 +9,7 @@ import flixel.FlxBasic; /* Just FlxSprite but with helper functions */ -class FlxSpriteExt extends FlxSprite { +class FlxSpriteExt extends FlxSkewedSprite { public static final DEFAULT_SPRITE:SpriteJson = { anims: [], @@ -35,8 +36,6 @@ class FlxSpriteExt extends FlxSprite { public var packer(default, null):PackerType = IMAGE; public var imageKey(default, null):String = "::null::"; - public var skew(default, null):FlxPoint = FlxPoint.get(); - public function new(?X:Float = 0, ?Y:Float = 0, ?SimpleGraphic:FlxGraphicAsset):Void { animOffsets = new Map(); animDatas = new Map(); @@ -178,8 +177,10 @@ class FlxSpriteExt extends FlxSprite { } if (skew.x != 0 || skew.y != 0) { - _matrix.c = Math.tan(skew.x * FlxAngle.TO_RAD); - _matrix.b = Math.tan(skew.y * FlxAngle.TO_RAD); + inline _skewMatrix.identity(); + _skewMatrix.b = Math.tan(skew.y * FlxAngle.TO_RAD); + _skewMatrix.c = Math.tan(skew.x * FlxAngle.TO_RAD); + inline _matrix.concat(_skewMatrix); } getScreenPosition(_point, camera).subtractPoint(offset); @@ -278,7 +279,6 @@ class FlxSpriteExt extends FlxSprite { override function destroy() { animOffsets = null; animDatas = null; - skew = FlxDestroyUtil.put(skew); super.destroy(); } diff --git a/source/funkin/objects/note/BasicNote.hx b/source/funkin/objects/note/BasicNote.hx index eaa494ac..0c0317d4 100644 --- a/source/funkin/objects/note/BasicNote.hx +++ b/source/funkin/objects/note/BasicNote.hx @@ -66,11 +66,13 @@ class BasicNote extends SmartSprite implements INoteData { } public var moving:Bool = true; + public var susLength:Float = 0.0; override function update(elapsed:Float):Void { super.update(elapsed); - if (targetStrum != null && moving) { - moveToStrum(); + if (targetStrum != null) { + if (moving) moveToStrum(); + active = Conductor.songPosition < (strumTime + susLength + getPosMill(NoteUtil.swagHeight * 2)); } } diff --git a/source/funkin/objects/note/Sustain.hx b/source/funkin/objects/note/Sustain.hx index d7187152..c952cb01 100644 --- a/source/funkin/objects/note/Sustain.hx +++ b/source/funkin/objects/note/Sustain.hx @@ -3,8 +3,6 @@ package funkin.objects.note; import flixel.graphics.frames.FlxFrame; class Sustain extends BasicNote { - public var susLength:Float = 0.0; - public function new(noteData:Int = 0, strumTime:Float = 0.0, susLength:Float = 0.0, skin:String = "default", ?parent:Note):Void { clipRect = FlxRect.get(); super(noteData, strumTime, skin); // Load skin @@ -96,9 +94,8 @@ class Sustain extends BasicNote { loadFromSprite(curSkinData.baseSprite); playAnim("hold" + CoolUtil.directionArray[noteData]); - - //playAnim("hold" + CoolUtil.directionArray[noteData] + "-end"); targetStrum = targetStrum; + smoothTiles = Math.round(125 / height); final lastHeight = repeatHeight; setTiles(1, 1);