Skip to content
This repository has been archived by the owner on Jan 26, 2025. It is now read-only.

Commit

Permalink
my mango is to blow up
Browse files Browse the repository at this point in the history
  • Loading branch information
MaybeMaru committed Dec 21, 2023
1 parent 7ce7800 commit 22330c1
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 6 deletions.
9 changes: 4 additions & 5 deletions source/funkin/graphics/FlxRepeatSprite.hx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import flixel.graphics.frames.FlxFrame;
enum RepeatDrawStyle {
TOP_BOTTOM;
BOTTOM_TOP;
//FAST_BOTTOM_TOP; maybe later
}

/**
Expand Down Expand Up @@ -204,10 +203,10 @@ class FlxRepeatSprite extends FlxSpriteExt {
}

inline function matrixOutOfBounds(matrix:FlxMatrix, frame:FlxRect, cam:FlxCamera):Bool {
return ((_matrix.ty + frame.height) < cam.viewY) ||
((_matrix.ty - frame.height) > cam.viewHeight) ||
((_matrix.tx + frame.width) < cam.viewX) ||
((_matrix.tx - frame.width) > cam.viewWidth);
return ((_matrix.ty + (frame.height * scale.y)) < cam.viewY) ||
((_matrix.ty - (frame.height * scale.y)) > cam.viewHeight) ||
((_matrix.tx + (frame.width * scale.x)) < cam.viewX) ||
((_matrix.tx - (frame.width * scale.x)) > cam.viewWidth);
}

function handleClipRect(tileFrame:FlxFrame, baseFrame:FlxFrame, tilePos:FlxPoint) {
Expand Down
47 changes: 47 additions & 0 deletions source/funkin/graphics/FlxSkewRepeatSprite.hx
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package funkin.graphics;

import flixel.math.FlxMatrix;
import flixel.graphics.frames.FlxFrame;
import openfl.display.BitmapData;

/*
TODO: add skew y support (_matrix.b) and fix problems with dynamically sized tiles
*/

class FlxSkewRepeatSprite extends FlxRepeatSprite {

static final tempMatrix:FlxMatrix = new FlxMatrix();

public var wigglePower:Float = 50.0;


var elp:Float = 0.0;

override function update(elapsed:Float) {
super.update(elapsed);
elp += elapsed * 10;
wigglePower = Math.sin(elp) * 50;
}

static var matX:Float = 0.0;

override function drawTile(tileX:Int, tileY:Int, tileFrame:FlxFrame, baseFrame:FlxFrame, bitmap:BitmapData, tilePos:FlxPoint) {
if (wigglePower == 0) {
super.drawTile(tileX, tileY, tileFrame, baseFrame, bitmap, tilePos);
return;
}

tempMatrix.copyFrom(_matrix);

final wiggleX = wigglePower * ((baseFrame.frame.height * scale.y) * 0.01); // Value outta my ass but trust me bro

final skewX = wiggleX * (tileY % 2 == 0 ? -1 : 1);
_matrix.c = Math.tan(skewX * FlxAngle.TO_RAD);

if (tileY % 2 == 0) _matrix.translate(matX, 0);
matX = _matrix.c * baseFrame.frame.width;

super.drawTile(tileX, tileY, tileFrame, baseFrame, bitmap, tilePos);
_matrix.copyFrom(tempMatrix);
}
}
2 changes: 1 addition & 1 deletion source/funkin/graphics/SmartSprite.hx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ enum RenderMode {
REPEAT;
}

class SmartSprite extends FlxRepeatSprite {
class SmartSprite extends FlxSkewRepeatSprite {
public var renderMode:RenderMode = QUAD;
public function setRenderMode(value:String) {
renderMode = switch (value.toLowerCase().trim()) {
Expand Down

0 comments on commit 22330c1

Please sign in to comment.