parent
72d312ac9b
commit
865ae82114
src/Bindings
@ -173,6 +173,31 @@ void cLuaState::Detach(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cLuaState::AddPackagePath(const AString & a_PathVariable, const AString & a_Path)
|
||||||
|
{
|
||||||
|
// Get the current path:
|
||||||
|
lua_getfield(m_LuaState, LUA_GLOBALSINDEX, "package"); // Stk: <package>
|
||||||
|
lua_getfield(m_LuaState, -1, a_PathVariable.c_str()); // Stk: <package> <package.path>
|
||||||
|
size_t len = 0;
|
||||||
|
const char * PackagePath = lua_tolstring(m_LuaState, -1, &len);
|
||||||
|
|
||||||
|
// Append the new path:
|
||||||
|
AString NewPackagePath(PackagePath, len);
|
||||||
|
NewPackagePath.append(LUA_PATHSEP);
|
||||||
|
NewPackagePath.append(a_Path);
|
||||||
|
|
||||||
|
// Set the new path to the environment:
|
||||||
|
lua_pop(m_LuaState, 1); // Stk: <package>
|
||||||
|
lua_pushlstring(m_LuaState, NewPackagePath.c_str(), NewPackagePath.length()); // Stk: <package> <NewPackagePath>
|
||||||
|
lua_setfield(m_LuaState, -2, a_PathVariable.c_str()); // Stk: <package>
|
||||||
|
lua_pop(m_LuaState, 1);
|
||||||
|
lua_pop(m_LuaState, 1); // Stk: -
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool cLuaState::LoadFile(const AString & a_FileName)
|
bool cLuaState::LoadFile(const AString & a_FileName)
|
||||||
{
|
{
|
||||||
ASSERT(IsValid());
|
ASSERT(IsValid());
|
||||||
@ -1251,6 +1276,7 @@ void cLuaState::LogStack(lua_State * a_LuaState, const char * a_Header)
|
|||||||
case LUA_TLIGHTUSERDATA: Printf(Value, "%p", lua_touserdata(a_LuaState, i)); break;
|
case LUA_TLIGHTUSERDATA: Printf(Value, "%p", lua_touserdata(a_LuaState, i)); break;
|
||||||
case LUA_TNUMBER: Printf(Value, "%f", (double)lua_tonumber(a_LuaState, i)); break;
|
case LUA_TNUMBER: Printf(Value, "%f", (double)lua_tonumber(a_LuaState, i)); break;
|
||||||
case LUA_TSTRING: Printf(Value, "%s", lua_tostring(a_LuaState, i)); break;
|
case LUA_TSTRING: Printf(Value, "%s", lua_tostring(a_LuaState, i)); break;
|
||||||
|
case LUA_TTABLE: Printf(Value, "%p", lua_topointer(a_LuaState, i)); break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
LOGD(" Idx %d: type %d (%s) %s", i, Type, lua_typename(a_LuaState, Type), Value.c_str());
|
LOGD(" Idx %d: type %d (%s) %s", i, Type, lua_typename(a_LuaState, Type), Value.c_str());
|
||||||
|
@ -154,6 +154,9 @@ public:
|
|||||||
/** Returns true if the m_LuaState is valid */
|
/** Returns true if the m_LuaState is valid */
|
||||||
bool IsValid(void) const { return (m_LuaState != NULL); }
|
bool IsValid(void) const { return (m_LuaState != NULL); }
|
||||||
|
|
||||||
|
/** Adds the specified path to package.<a_PathVariable> */
|
||||||
|
void AddPackagePath(const AString & a_PathVariable, const AString & a_Path);
|
||||||
|
|
||||||
/** Loads the specified file
|
/** Loads the specified file
|
||||||
Returns false and logs a warning to the console if not successful (but the LuaState is kept open).
|
Returns false and logs a warning to the console if not successful (but the LuaState is kept open).
|
||||||
m_SubsystemName is displayed in the warning log message.
|
m_SubsystemName is displayed in the warning log message.
|
||||||
|
@ -82,6 +82,14 @@ bool cPluginLua::Initialize(void)
|
|||||||
lua_pushstring(m_LuaState, GetName().c_str());
|
lua_pushstring(m_LuaState, GetName().c_str());
|
||||||
lua_setglobal(m_LuaState, LUA_PLUGIN_NAME_VAR_NAME);
|
lua_setglobal(m_LuaState, LUA_PLUGIN_NAME_VAR_NAME);
|
||||||
|
|
||||||
|
// Add the plugin's folder to the package.path and package.cpath variables (#693):
|
||||||
|
m_LuaState.AddPackagePath("path", FILE_IO_PREFIX + GetLocalFolder() + "/?.lua");
|
||||||
|
#ifdef _WIN32
|
||||||
|
m_LuaState.AddPackagePath("cpath", GetLocalFolder() + "\\?.dll");
|
||||||
|
#else
|
||||||
|
m_LuaState.AddPackagePath("cpath", FILE_IO_PREFIX + GetLocalFolder() + "/?.so");
|
||||||
|
#endif
|
||||||
|
|
||||||
tolua_pushusertype(m_LuaState, this, "cPluginLua");
|
tolua_pushusertype(m_LuaState, this, "cPluginLua");
|
||||||
lua_setglobal(m_LuaState, "g_Plugin");
|
lua_setglobal(m_LuaState, "g_Plugin");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user