diff --git a/assets/data/global.hx b/assets/data/global.hx index 698aee79..5e479c62 100644 --- a/assets/data/global.hx +++ b/assets/data/global.hx @@ -1,3 +1,3 @@ -function update(elapsed) - if (FlxG.keys.justPressed.F5) - FlxG.resetState(); \ No newline at end of file +// +function update(elapsed:Float) + if (FlxG.keys.justPressed.F5) FlxG.resetState(); \ No newline at end of file diff --git a/assets/shaders/engine/cameraClip.frag b/assets/shaders/engine/cameraClip.frag new file mode 100644 index 00000000..d5c2dc35 --- /dev/null +++ b/assets/shaders/engine/cameraClip.frag @@ -0,0 +1,17 @@ +#pragma header + +// Used in difficulty screen + +uniform vec4 clipRect; + +bool boxCollision(vec2 pixel, vec4 rect) { + return (pixel.x >= rect.x) && (pixel.x < rect.x + rect.z) && (pixel.y >= rect.y) && (pixel.y < rect.y + rect.w); +} + +void main() +{ + vec2 pixel = gl_FragCoord.xy; + + if (boxCollision(pixel, clipRect)) gl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv.xy); + else gl_FragColor = vec4(0.); +} \ No newline at end of file diff --git a/assets/shaders/engine/colorPicker.frag b/assets/shaders/engine/colorPicker.frag index c773584e..d31972d8 100644 --- a/assets/shaders/engine/colorPicker.frag +++ b/assets/shaders/engine/colorPicker.frag @@ -1,5 +1,7 @@ #pragma header +// Used in colorwheel + vec3 hsvToRgb(vec3 c) { //hsv.x = hue, hsv.y = saturation, hsv.z = value vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); diff --git a/assets/shaders/engine/editorBlur.frag b/assets/shaders/engine/editorBlur.frag index de6ff524..66b3eafb 100644 --- a/assets/shaders/engine/editorBlur.frag +++ b/assets/shaders/engine/editorBlur.frag @@ -1,6 +1,8 @@ #pragma header #define PI 3.14159265359 +// Used for editors + int steps = 16; int stepsInside = 2; float strength = 0.0075; diff --git a/assets/shaders/engine/editorBlurFast.frag b/assets/shaders/engine/editorBlurFast.frag index 8c83ac63..75ef96af 100644 --- a/assets/shaders/engine/editorBlurFast.frag +++ b/assets/shaders/engine/editorBlurFast.frag @@ -1,5 +1,7 @@ #pragma header +// Used for editors (faster) + //#define iResolution _camSize #define getTexture textureCam diff --git a/source/funkin/editors/charter/ChartCreationScreen.hx b/source/funkin/editors/charter/ChartCreationScreen.hx index 28afe6a8..259076ed 100644 --- a/source/funkin/editors/charter/ChartCreationScreen.hx +++ b/source/funkin/editors/charter/ChartCreationScreen.hx @@ -1,5 +1,7 @@ package funkin.editors.charter; +import funkin.backend.shaders.CustomShader; +import flixel.math.FlxRect; import funkin.game.Character; import funkin.game.Stage; import funkin.game.HealthIcon; @@ -159,6 +161,8 @@ class StrumLineButton extends UIButton { public var labels:Map = []; public var XYComma:UIText; + public var cameraClipShader:CustomShader; + public function new(id:Int, strumLine:ChartStrumLine, parent:UIButtonList) { super(0, 0, '', function () {}, 620, 246); @@ -178,6 +182,10 @@ class StrumLineButton extends UIButton { members.push(charactersList); idText = addLabelOn(charactersList, 'Strumline - #$id'); + cameraClipShader = new CustomShader("engine/cameraClip"); + cameraClipShader.hset("clipRect", [0, 0, 100, 100]); + charactersList.buttonCameras.addShader(cameraClipShader); + typeDropdown = new UIDropDown(charactersList.x + charactersList.bWidth + 16, 8+26, 200, 32, ["OPPONENT", "PLAYER", "ADDITIONAL"], strumLine.type); members.push(typeDropdown); addLabelOn(typeDropdown, "Type"); @@ -256,6 +264,10 @@ class StrumLineButton extends UIButton { XYComma.follow(hudXStepper, 84 - 32, 9); for (ui => text in labels) text.follow(ui, 0, -24); + + var subState:ChartCreationScreen = cast FlxG.state.subState; + var strumLineList:UIButtonList = subState.strumLineList; + cameraClipShader.hset("clipRect", [0, (-y-(8+26))+cameras[0].scroll.y, strumLineList.bWidth, strumLineList.bHeight]); } }