From 69478bf5ae772e3b77a9170efb6c5750cb31cded Mon Sep 17 00:00:00 2001 From: Kade M Date: Mon, 3 May 2021 20:33:28 -0700 Subject: [PATCH] poggers --- source/LuaShader.hx | 72 ++++++++++++++++++++++++++++++++++++++++ source/ModchartState.hx | 71 +++++++++++++++------------------------ source/StoryMenuState.hx | 4 +-- 3 files changed, 101 insertions(+), 46 deletions(-) create mode 100644 source/LuaShader.hx diff --git a/source/LuaShader.hx b/source/LuaShader.hx new file mode 100644 index 0000000..4e403c6 --- /dev/null +++ b/source/LuaShader.hx @@ -0,0 +1,72 @@ +/*import flixel.system.FlxAssets.FlxShader; + +class LuaShader extends FlxShader +{ + // SHADER SHIT FOR LUA CODE + + public function new(frag,vert) + { + glFragmentSource = ' + #pragma header + varying float openfl_Alphav; + varying vec4 openfl_ColorMultiplierv; + varying vec4 openfl_ColorOffsetv; + varying vec2 openfl_TextureCoordv; + + uniform bool openfl_HasColorTransform; + uniform vec2 openfl_TextureSize; + uniform sampler2D bitmap; + + uniform bool hasTransform; + uniform bool hasColorTransform; + + uniform vec3 iResolution; // viewport resolution (in pixels) + uniform float iTime; // shader playback time (in seconds) + uniform float iTimeDelta; // render time (in seconds) + uniform int iFrame; // shader playback frame + uniform float iChannelTime[4]; // channel playback time (in seconds) + uniform vec3 iChannelResolution[4]; // channel resolution (in pixels) + uniform vec4 iMouse; // mouse pixel coords. xy: current, zw: click + uniform samplerXX iChannel0..3; // input channel. XX = 2D/Cube + uniform vec4 iDate; // (year, month, day, time in seconds) + uniform float iSampleRate; // sound sample rate (i.e., 44100) + + vec4 flixel_texture2D(sampler2D bitmap, vec2 coord) + { + vec4 color = texture2D(bitmap, coord); + if (!hasTransform) + { + return color; + } + + if (color.a == 0.0) + { + return vec4(0.0, 0.0, 0.0, 0.0); + } + + if (!hasColorTransform) + { + return color * openfl_Alphav; + } + + color = vec4(color.rgb / color.a, color.a); + + mat4 colorMultiplier = mat4(0); + colorMultiplier[0][0] = openfl_ColorMultiplierv.x; + colorMultiplier[1][1] = openfl_ColorMultiplierv.y; + colorMultiplier[2][2] = openfl_ColorMultiplierv.z; + colorMultiplier[3][3] = openfl_ColorMultiplierv.w; + + color = clamp(openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0); + + if (color.a > 0.0) + { + return vec4(0.0, 0.0, 0.0, 0.0); + } + + ' + frag; + + iResolution + super(); + } +}*/ \ No newline at end of file diff --git a/source/ModchartState.hx b/source/ModchartState.hx index dba3160..0b338ff 100644 --- a/source/ModchartState.hx +++ b/source/ModchartState.hx @@ -3,6 +3,7 @@ // Lua #if windows import flixel.tweens.FlxEase; +import openfl.filters.ShaderFilter; import flixel.tweens.FlxTween; import flixel.util.FlxColor; import openfl.geom.Matrix; @@ -19,7 +20,7 @@ import flixel.FlxG; class ModchartState { - + //public static var shaders:Array = null; public static var lua:State = null; @@ -170,7 +171,11 @@ class ModchartState } // lua objects or what ever if (luaSprites.get(id) == null) + { + if (Std.is(id, String)) + return Reflect.getProperty(PlayState.instance,id); return PlayState.PlayState.strumLineNotes.members[Std.parseInt(id)]; + } return luaSprites.get(id); } @@ -237,13 +242,15 @@ class ModchartState function new() { - trace('opening a lua state (because we are cool :))'); + trace('opening a lua state (because we are cool :))'); lua = LuaL.newstate(); LuaL.openlibs(lua); trace("Lua version: " + Lua.version()); trace("LuaJIT version: " + Lua.versionJIT()); Lua.init_callbacks(lua); + //shaders = new Array(); + var result = LuaL.dofile(lua, Paths.lua(PlayState.SONG.song.toLowerCase() + "/modchart")); // execute le file if (result != 0) @@ -532,52 +539,28 @@ class ModchartState }); // shader + + /*Lua_helper.add_callback(lua,"createShader", function(frag:String,vert:String) { + var shader:LuaShader = new LuaShader(frag,vert); - /*Lua_helper.add_callback(lua,"setRenderedNoteWiggle", function(id:Int, effectType:String, waveSpeed:Int, waveFrequency:Int) { - trace('call'); - var wiggleEffect = new WiggleEffect(); - switch(effectType.toLowerCase()) - { - case 'dreamy': - wiggleEffect.effectType = WiggleEffectType.DREAMY; - case 'wavy': - wiggleEffect.effectType = WiggleEffectType.WAVY; - case 'heat_wave_horizontal': - wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_HORIZONTAL; - case 'heat_wave_vertical': - wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_VERTICAL; - case 'flag': - wiggleEffect.effectType = WiggleEffectType.FLAG; - } - wiggleEffect.waveFrequency = waveFrequency; - wiggleEffect.waveSpeed = waveSpeed; - wiggleEffect.shader.uTime.value = [(strumLine.y - Note.swagWidth * 4) / FlxG.height]; // from 4mbr0s3 2 - notes.members[id].shader = wiggleEffect.shader; - luaWiggles.push(wiggleEffect); + trace(shader.glFragmentSource); + + shaders.push(shader); + // if theres 1 shader we want to say theres 0 since 0 index and length returns a 1 index. + return shaders.length == 1 ? 0 : shaders.length; }); - Lua_helper.add_callback(lua,"setActorWiggle", function(id:String, effectType:String, waveSpeed:Int, waveFrequency:Int) { - trace('call'); - var wiggleEffect = new WiggleEffect(); - switch(effectType.toLowerCase()) - { - case 'dreamy': - wiggleEffect.effectType = WiggleEffectType.DREAMY; - case 'wavy': - wiggleEffect.effectType = WiggleEffectType.WAVY; - case 'heat_wave_horizontal': - wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_HORIZONTAL; - case 'heat_wave_vertical': - wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_VERTICAL; - case 'flag': - wiggleEffect.effectType = WiggleEffectType.FLAG; - } - wiggleEffect.waveFrequency = waveFrequency; - wiggleEffect.waveSpeed = waveSpeed; - wiggleEffect.shader.uTime.value = [(strumLine.y - Note.swagWidth * 4) / FlxG.height]; // from 4mbr0s3 2 - getActorByName(id).shader = wiggleEffect.shader; - luaWiggles.push(wiggleEffect); + + Lua_helper.add_callback(lua,"setFilterHud", function(shaderIndex:Int) { + PlayState.instance.camHUD.setFilters([new ShaderFilter(shaders[shaderIndex])]); + }); + + Lua_helper.add_callback(lua,"setFilterCam", function(shaderIndex:Int) { + FlxG.camera.setFilters([new ShaderFilter(shaders[shaderIndex])]); });*/ + + // default strums + for (i in 0...PlayState.strumLineNotes.length) { var member = PlayState.strumLineNotes.members[i]; trace(PlayState.strumLineNotes.members[i].x + " " + PlayState.strumLineNotes.members[i].y + " " + PlayState.strumLineNotes.members[i].angle + " | strum" + i); diff --git a/source/StoryMenuState.hx b/source/StoryMenuState.hx index 3d99237..9fccd52 100644 --- a/source/StoryMenuState.hx +++ b/source/StoryMenuState.hx @@ -383,15 +383,15 @@ class StoryMenuState extends MusicBeatState var stringThing:Array = weekData[curWeek]; for (i in stringThing) - { txtTracklist.text += "\n" + i; - } txtTracklist.text = txtTracklist.text.toUpperCase(); txtTracklist.screenCenter(X); txtTracklist.x -= FlxG.width * 0.35; + txtTracklist.text += "\n"; + #if !switch intendedScore = Highscore.getWeekScore(curWeek, curDifficulty); #end