#pragma once #include #include #include #include "sol/sol.hpp" #include "U_Log.h" #include "U_SafeLuaCall.h" class CScriptClassBase //TODO multiple LUA states { public: CScriptClassBase(const std::map& _Functions, std::shared_ptr _State); template sol::object CallScriptedFunction(const std::string& name, Args... args) { if(!State) { return sol::lua_nil; } auto it = Functions.find(name); if(it == Functions.end()) { return sol::lua_nil; } if(!it->second.valid() || !it->second.is()) { return sol::lua_nil; } return SafeCallLuaReturn(it->second, args...); //return (it->second)(args...); } std::shared_ptr State; std::map Functions; };