From 6a01c3008ca0db2f303bd0219e361911bc402fc3 Mon Sep 17 00:00:00 2001 From: Cameron Taylor <cameron.taylor.ninja@gmail.com> Date: Wed, 7 Dec 2022 02:29:48 -0500 Subject: [PATCH] proper result screen masking ! --- source/funkin/TitleState.hx | 16 ++++++++++++++ source/funkin/play/ResultState.hx | 19 ++++++++++++++-- source/funkin/shaderslmfao/LeftMaskShader.hx | 23 +++++++++++++++++++- 3 files changed, 55 insertions(+), 3 deletions(-) diff --git a/source/funkin/TitleState.hx b/source/funkin/TitleState.hx index ef3984f80..48f5d9550 100644 --- a/source/funkin/TitleState.hx +++ b/source/funkin/TitleState.hx @@ -11,6 +11,7 @@ import flixel.util.FlxDirectionFlags; import flixel.util.FlxTimer; import funkin.audiovis.SpectogramSprite; import funkin.shaderslmfao.ColorSwap; +import funkin.shaderslmfao.LeftMaskShader; import funkin.shaderslmfao.TitleOutline; import funkin.ui.AtlasText; import funkin.util.Constants; @@ -133,6 +134,7 @@ class TitleState extends MusicBeatState var gfDance:FlxSprite; var danceLeft:Bool = false; var titleText:FlxSprite; + var maskShader = new LeftMaskShader(); function startIntro() { @@ -166,6 +168,9 @@ class TitleState extends MusicBeatState add(gfDance); + // maskShader.swagSprX = gfDance.x; + // maskShader.swagMaskX = gfDance.x + 200; + // maskShader.frameUV = gfDance.frame.uv; // gfDance.shader = maskShader; // gfDance.shader = swagShader.shader; @@ -436,6 +441,17 @@ class TitleState extends MusicBeatState super.update(elapsed); } + override function draw() + { + super.draw(); + + // if (gfDance != null) + // { + // trace(gfDance.frame.uv); + // maskShader.frameUV = gfDance.frame.uv; + // } + } + var cheatArray:Array<Int> = [0x0001, 0x0010, 0x0001, 0x0010, 0x0100, 0x1000, 0x0100, 0x1000]; var curCheatPos:Int = 0; var cheatActive:Bool = false; diff --git a/source/funkin/play/ResultState.hx b/source/funkin/play/ResultState.hx index 359b64f5a..59dc67c47 100644 --- a/source/funkin/play/ResultState.hx +++ b/source/funkin/play/ResultState.hx @@ -6,6 +6,7 @@ import flixel.graphics.frames.FlxAtlasFrames; import flixel.graphics.frames.FlxBitmapFont; import flixel.group.FlxGroup.FlxTypedGroup; import flixel.math.FlxPoint; +import flixel.math.FlxRect; import flixel.text.FlxBitmapText; import flixel.text.FlxText; import flixel.tweens.FlxEase; @@ -121,7 +122,7 @@ class ResultState extends MusicBeatSubstate songName.shader = maskShaderSongName; difficulty.shader = maskShaderDifficulty; - maskShaderSongName.swagMaskX = difficulty.x - 15; + // maskShaderSongName.swagMaskX = difficulty.x - 15; maskShaderDifficulty.swagMaskX = difficulty.x - 15; var blackTopBar:FlxSprite = new FlxSprite().loadGraphic(Paths.image("resultScreen/topBarBlack")); @@ -252,9 +253,23 @@ class ResultState extends MusicBeatSubstate var movingSongStuff:Bool = false; var speedOfTween:FlxPoint = FlxPoint.get(-1, 0.1); + override function draw():Void + { + super.draw(); + + if (songName != null) + { + songName.clipRect = FlxRect.get(Math.max(0, 540 - songName.x), 0, FlxG.width, songName.height); + // PROBABLY SHOULD FIX MEMORY FREE OR WHATEVER THE PUT() FUNCTION DOES !!!! FEELS LIKE IT STUTTERS!!! + } + + // if (songName != null && songName.frame != null) + // maskShaderSongName.frameUV = songName.frame.uv; + } + override function update(elapsed:Float) { - maskShaderSongName.swagSprX = songName.x; + // maskShaderSongName.swagSprX = songName.x; maskShaderDifficulty.swagSprX = difficulty.x; if (movingSongStuff) diff --git a/source/funkin/shaderslmfao/LeftMaskShader.hx b/source/funkin/shaderslmfao/LeftMaskShader.hx index 0e0b7bcc7..091eba86e 100644 --- a/source/funkin/shaderslmfao/LeftMaskShader.hx +++ b/source/funkin/shaderslmfao/LeftMaskShader.hx @@ -1,11 +1,13 @@ package funkin.shaderslmfao; +import flixel.math.FlxRect; import flixel.system.FlxAssets.FlxShader; class LeftMaskShader extends FlxShader { public var swagMaskX(default, set):Float = 0; public var swagSprX(default, set):Float = 0; + public var frameUV(default, set):FlxRect; function set_swagSprX(x:Float):Float { @@ -21,12 +23,26 @@ class LeftMaskShader extends FlxShader return x; } + function set_frameUV(uv:FlxRect):FlxRect + { + trace("SETTING FRAMEUV"); + trace(uv); + + uvFrameX.value[0] = uv.x; + uvFrameY.value[0] = uv.y; + + return uv; + } + @:glFragmentSource(' #pragma header uniform float sprX; uniform float maskX; + uniform float uvFrameX; + uniform float uvFrameY; + void main() { @@ -37,12 +53,15 @@ class LeftMaskShader extends FlxShader vec4 color = flixel_texture2D(bitmap, uv); - if (uv.x < sprPos) + if (uv.x < sprPos + uvFrameX) { color = vec4(0.0, 0.0, 0.0, 0.0); } gl_FragColor = color; + // vec4 testCol = vec4(openfl_Position.x, openfl_Position.y, openfl_Position.z, 1.0); + //gl_FragColor = vec4(1.0, openfl_TextureSize.x, 1.0, 1.0); + } ') public function new() @@ -51,5 +70,7 @@ class LeftMaskShader extends FlxShader sprX.value = [0]; maskX.value = [0]; + uvFrameX.value = [0]; + uvFrameY.value = [0]; } }