1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Load CSM environment after the restrictions are known

Safety-guards for CSM callbacks to abort on a bad implementation
Only run callbacks when the mods are loaded (and with it: builtin)

Duplication checks inside constructors
This commit is contained in:
SmallJoker 2019-06-25 21:18:08 +02:00
parent 720aedb467
commit 23677be951
10 changed files with 64 additions and 55 deletions

View file

@ -31,19 +31,24 @@ LuaCamera::LuaCamera(Camera *m) : m_camera(m)
void LuaCamera::create(lua_State *L, Camera *m)
{
lua_getglobal(L, "core");
luaL_checktype(L, -1, LUA_TTABLE);
int objectstable = lua_gettop(L);
lua_getfield(L, -1, "camera");
// Duplication check
if (lua_type(L, -1) == LUA_TUSERDATA) {
lua_pop(L, 1);
return;
}
LuaCamera *o = new LuaCamera(m);
*(void **)(lua_newuserdata(L, sizeof(void *))) = o;
luaL_getmetatable(L, className);
lua_setmetatable(L, -2);
int camera_object = lua_gettop(L);
lua_getglobal(L, "core");
luaL_checktype(L, -1, LUA_TTABLE);
int coretable = lua_gettop(L);
lua_pushvalue(L, camera_object);
lua_setfield(L, coretable, "camera");
lua_pushvalue(L, lua_gettop(L));
lua_setfield(L, objectstable, "camera");
}
int LuaCamera::l_set_camera_mode(lua_State *L)