* Lua Improvments * fix * fix 2 * fix 3 * fix 4 * fix 5 * fix 6 * Fix 7, please action dont fail * done * done 2 * done 3 * final * last fix * please last fix final * add `curSection` on lua * ready for pr * oops * oop2 * Lua Improvements 2 * Update Project.xml * fixed `lastCalledScript` * Attempt Fix 2 * Attempt fix 3 * shit * done i think * fuck * fuck 2
281 lines
9.3 KiB
Haxe
281 lines
9.3 KiB
Haxe
package psychlua;
|
|
|
|
#if (!flash && sys)
|
|
import flixel.addons.display.FlxRuntimeShader;
|
|
#end
|
|
|
|
class ShaderFunctions
|
|
{
|
|
public static function implement(funk:FunkinLua)
|
|
{
|
|
var lua = funk.lua;
|
|
// shader shit
|
|
funk.addLocalCallback("initLuaShader", function(name:String) {
|
|
if(!ClientPrefs.shaders) return false;
|
|
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
return funk.initLuaShader(name);
|
|
#else
|
|
FunkinLua.luaTrace("initLuaShader: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
#end
|
|
return false;
|
|
});
|
|
|
|
funk.addLocalCallback("setSpriteShader", function(obj:String, shader:String) {
|
|
if(!ClientPrefs.shaders) return false;
|
|
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
if(!funk.runtimeShaders.exists(shader) && !funk.initLuaShader(shader))
|
|
{
|
|
FunkinLua.luaTrace('setSpriteShader: Shader $shader is missing!', false, false, FlxColor.RED);
|
|
return false;
|
|
}
|
|
|
|
var split:Array<String> = obj.split('.');
|
|
var leObj:FlxSprite = LuaUtils.getObjectDirectly(split[0]);
|
|
if(split.length > 1) {
|
|
leObj = LuaUtils.getVarInArray(LuaUtils.getPropertyLoop(split), split[split.length-1]);
|
|
}
|
|
|
|
if(leObj != null) {
|
|
var arr:Array<String> = funk.runtimeShaders.get(shader);
|
|
leObj.shader = new FlxRuntimeShader(arr[0], arr[1]);
|
|
return true;
|
|
}
|
|
#else
|
|
FunkinLua.luaTrace("setSpriteShader: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
#end
|
|
return false;
|
|
});
|
|
Lua_helper.add_callback(lua, "removeSpriteShader", function(obj:String) {
|
|
var split:Array<String> = obj.split('.');
|
|
var leObj:FlxSprite = LuaUtils.getObjectDirectly(split[0]);
|
|
if(split.length > 1) {
|
|
leObj = LuaUtils.getVarInArray(LuaUtils.getPropertyLoop(split), split[split.length-1]);
|
|
}
|
|
|
|
if(leObj != null) {
|
|
leObj.shader = null;
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
|
|
Lua_helper.add_callback(lua, "getShaderBool", function(obj:String, prop:String) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if (shader == null)
|
|
{
|
|
FunkinLua.luaTrace("getShaderBool: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return null;
|
|
}
|
|
return shader.getBool(prop);
|
|
#else
|
|
FunkinLua.luaTrace("getShaderBool: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return null;
|
|
#end
|
|
});
|
|
Lua_helper.add_callback(lua, "getShaderBoolArray", function(obj:String, prop:String) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if (shader == null)
|
|
{
|
|
FunkinLua.luaTrace("getShaderBoolArray: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return null;
|
|
}
|
|
return shader.getBoolArray(prop);
|
|
#else
|
|
FunkinLua.luaTrace("getShaderBoolArray: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return null;
|
|
#end
|
|
});
|
|
Lua_helper.add_callback(lua, "getShaderInt", function(obj:String, prop:String) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if (shader == null)
|
|
{
|
|
FunkinLua.luaTrace("getShaderInt: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return null;
|
|
}
|
|
return shader.getInt(prop);
|
|
#else
|
|
FunkinLua.luaTrace("getShaderInt: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return null;
|
|
#end
|
|
});
|
|
Lua_helper.add_callback(lua, "getShaderIntArray", function(obj:String, prop:String) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if (shader == null)
|
|
{
|
|
FunkinLua.luaTrace("getShaderIntArray: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return null;
|
|
}
|
|
return shader.getIntArray(prop);
|
|
#else
|
|
FunkinLua.luaTrace("getShaderIntArray: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return null;
|
|
#end
|
|
});
|
|
Lua_helper.add_callback(lua, "getShaderFloat", function(obj:String, prop:String) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if (shader == null)
|
|
{
|
|
FunkinLua.luaTrace("getShaderFloat: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return null;
|
|
}
|
|
return shader.getFloat(prop);
|
|
#else
|
|
FunkinLua.luaTrace("getShaderFloat: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return null;
|
|
#end
|
|
});
|
|
Lua_helper.add_callback(lua, "getShaderFloatArray", function(obj:String, prop:String) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if (shader == null)
|
|
{
|
|
FunkinLua.luaTrace("getShaderFloatArray: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return null;
|
|
}
|
|
return shader.getFloatArray(prop);
|
|
#else
|
|
FunkinLua.luaTrace("getShaderFloatArray: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return null;
|
|
#end
|
|
});
|
|
|
|
|
|
Lua_helper.add_callback(lua, "setShaderBool", function(obj:String, prop:String, value:Bool) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if(shader == null)
|
|
{
|
|
FunkinLua.luaTrace("setShaderBool: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return false;
|
|
}
|
|
shader.setBool(prop, value);
|
|
return true;
|
|
#else
|
|
FunkinLua.luaTrace("setShaderBool: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return false;
|
|
#end
|
|
});
|
|
Lua_helper.add_callback(lua, "setShaderBoolArray", function(obj:String, prop:String, values:Dynamic) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if(shader == null)
|
|
{
|
|
FunkinLua.luaTrace("setShaderBoolArray: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return false;
|
|
}
|
|
shader.setBoolArray(prop, values);
|
|
return true;
|
|
#else
|
|
FunkinLua.luaTrace("setShaderBoolArray: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return false;
|
|
#end
|
|
});
|
|
Lua_helper.add_callback(lua, "setShaderInt", function(obj:String, prop:String, value:Int) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if(shader == null)
|
|
{
|
|
FunkinLua.luaTrace("setShaderInt: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return false;
|
|
}
|
|
shader.setInt(prop, value);
|
|
return true;
|
|
#else
|
|
FunkinLua.luaTrace("setShaderInt: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return false;
|
|
#end
|
|
});
|
|
Lua_helper.add_callback(lua, "setShaderIntArray", function(obj:String, prop:String, values:Dynamic) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if(shader == null)
|
|
{
|
|
FunkinLua.luaTrace("setShaderIntArray: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return false;
|
|
}
|
|
shader.setIntArray(prop, values);
|
|
return true;
|
|
#else
|
|
FunkinLua.luaTrace("setShaderIntArray: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return false;
|
|
#end
|
|
});
|
|
Lua_helper.add_callback(lua, "setShaderFloat", function(obj:String, prop:String, value:Float) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if(shader == null)
|
|
{
|
|
FunkinLua.luaTrace("setShaderFloat: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return false;
|
|
}
|
|
shader.setFloat(prop, value);
|
|
return true;
|
|
#else
|
|
FunkinLua.luaTrace("setShaderFloat: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return false;
|
|
#end
|
|
});
|
|
Lua_helper.add_callback(lua, "setShaderFloatArray", function(obj:String, prop:String, values:Dynamic) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if(shader == null)
|
|
{
|
|
FunkinLua.luaTrace("setShaderFloatArray: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return false;
|
|
}
|
|
|
|
shader.setFloatArray(prop, values);
|
|
return true;
|
|
#else
|
|
FunkinLua.luaTrace("setShaderFloatArray: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return true;
|
|
#end
|
|
});
|
|
|
|
Lua_helper.add_callback(lua, "setShaderSampler2D", function(obj:String, prop:String, bitmapdataPath:String) {
|
|
#if (!flash && MODS_ALLOWED && sys)
|
|
var shader:FlxRuntimeShader = getShader(obj);
|
|
if(shader == null)
|
|
{
|
|
FunkinLua.luaTrace("setShaderSampler2D: Shader is not FlxRuntimeShader!", false, false, FlxColor.RED);
|
|
return false;
|
|
}
|
|
|
|
var value = Paths.image(bitmapdataPath);
|
|
if(value != null && value.bitmap != null)
|
|
{
|
|
shader.setSampler2D(prop, value.bitmap);
|
|
return true;
|
|
}
|
|
return false;
|
|
#else
|
|
FunkinLua.luaTrace("setShaderSampler2D: Platform unsupported for Runtime Shaders!", false, false, FlxColor.RED);
|
|
return false;
|
|
#end
|
|
});
|
|
}
|
|
|
|
#if (!flash && sys)
|
|
public static function getShader(obj:String):FlxRuntimeShader
|
|
{
|
|
var split:Array<String> = obj.split('.');
|
|
var target:FlxSprite = null;
|
|
if(split.length > 1) target = LuaUtils.getVarInArray(LuaUtils.getPropertyLoop(split), split[split.length-1]);
|
|
else target = LuaUtils.getObjectDirectly(split[0]);
|
|
|
|
if(target == null)
|
|
{
|
|
FunkinLua.luaTrace('Error on getting shader: Object $obj not found', false, false, FlxColor.RED);
|
|
return null;
|
|
}
|
|
return cast (target.shader, FlxRuntimeShader);
|
|
}
|
|
#end
|
|
} |