This commit is contained in:
Kade M 2021-05-03 20:33:28 -07:00
parent d967c58286
commit 69478bf5ae
3 changed files with 101 additions and 46 deletions

72
source/LuaShader.hx Normal file
View File

@ -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();
}
}*/

View File

@ -3,6 +3,7 @@
// Lua // Lua
#if windows #if windows
import flixel.tweens.FlxEase; import flixel.tweens.FlxEase;
import openfl.filters.ShaderFilter;
import flixel.tweens.FlxTween; import flixel.tweens.FlxTween;
import flixel.util.FlxColor; import flixel.util.FlxColor;
import openfl.geom.Matrix; import openfl.geom.Matrix;
@ -19,7 +20,7 @@ import flixel.FlxG;
class ModchartState class ModchartState
{ {
//public static var shaders:Array<LuaShader> = null;
public static var lua:State = null; public static var lua:State = null;
@ -170,7 +171,11 @@ class ModchartState
} }
// lua objects or what ever // lua objects or what ever
if (luaSprites.get(id) == null) 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 PlayState.PlayState.strumLineNotes.members[Std.parseInt(id)];
}
return luaSprites.get(id); return luaSprites.get(id);
} }
@ -237,13 +242,15 @@ class ModchartState
function new() function new()
{ {
trace('opening a lua state (because we are cool :))'); trace('opening a lua state (because we are cool :))');
lua = LuaL.newstate(); lua = LuaL.newstate();
LuaL.openlibs(lua); LuaL.openlibs(lua);
trace("Lua version: " + Lua.version()); trace("Lua version: " + Lua.version());
trace("LuaJIT version: " + Lua.versionJIT()); trace("LuaJIT version: " + Lua.versionJIT());
Lua.init_callbacks(lua); Lua.init_callbacks(lua);
//shaders = new Array<LuaShader>();
var result = LuaL.dofile(lua, Paths.lua(PlayState.SONG.song.toLowerCase() + "/modchart")); // execute le file var result = LuaL.dofile(lua, Paths.lua(PlayState.SONG.song.toLowerCase() + "/modchart")); // execute le file
if (result != 0) if (result != 0)
@ -532,52 +539,28 @@ class ModchartState
}); });
// shader // 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(shader.glFragmentSource);
trace('call');
var wiggleEffect = new WiggleEffect(); shaders.push(shader);
switch(effectType.toLowerCase()) // 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;
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);
}); });
Lua_helper.add_callback(lua,"setActorWiggle", function(id:String, effectType:String, waveSpeed:Int, waveFrequency:Int) {
trace('call'); Lua_helper.add_callback(lua,"setFilterHud", function(shaderIndex:Int) {
var wiggleEffect = new WiggleEffect(); PlayState.instance.camHUD.setFilters([new ShaderFilter(shaders[shaderIndex])]);
switch(effectType.toLowerCase()) });
{
case 'dreamy': Lua_helper.add_callback(lua,"setFilterCam", function(shaderIndex:Int) {
wiggleEffect.effectType = WiggleEffectType.DREAMY; FlxG.camera.setFilters([new ShaderFilter(shaders[shaderIndex])]);
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);
});*/ });*/
// default strums
for (i in 0...PlayState.strumLineNotes.length) { for (i in 0...PlayState.strumLineNotes.length) {
var member = PlayState.strumLineNotes.members[i]; var member = PlayState.strumLineNotes.members[i];
trace(PlayState.strumLineNotes.members[i].x + " " + PlayState.strumLineNotes.members[i].y + " " + PlayState.strumLineNotes.members[i].angle + " | strum" + i); trace(PlayState.strumLineNotes.members[i].x + " " + PlayState.strumLineNotes.members[i].y + " " + PlayState.strumLineNotes.members[i].angle + " | strum" + i);

View File

@ -383,15 +383,15 @@ class StoryMenuState extends MusicBeatState
var stringThing:Array<String> = weekData[curWeek]; var stringThing:Array<String> = weekData[curWeek];
for (i in stringThing) for (i in stringThing)
{
txtTracklist.text += "\n" + i; txtTracklist.text += "\n" + i;
}
txtTracklist.text = txtTracklist.text.toUpperCase(); txtTracklist.text = txtTracklist.text.toUpperCase();
txtTracklist.screenCenter(X); txtTracklist.screenCenter(X);
txtTracklist.x -= FlxG.width * 0.35; txtTracklist.x -= FlxG.width * 0.35;
txtTracklist.text += "\n";
#if !switch #if !switch
intendedScore = Highscore.getWeekScore(curWeek, curDifficulty); intendedScore = Highscore.getWeekScore(curWeek, curDifficulty);
#end #end