mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Defer to read_from_map in VoxelManip ctor
concrete problem: the getEmergeThread safety check was missing there
This commit is contained in:
parent
244f4f285a
commit
d95e916a42
2 changed files with 14 additions and 16 deletions
|
@ -369,36 +369,35 @@ LuaVoxelManip::LuaVoxelManip(Map *map) : vm(new MMVManip(map))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
LuaVoxelManip::LuaVoxelManip(Map *map, v3s16 p1, v3s16 p2)
|
|
||||||
{
|
|
||||||
vm = new MMVManip(map);
|
|
||||||
|
|
||||||
v3s16 bp1 = getNodeBlockPos(p1);
|
|
||||||
v3s16 bp2 = getNodeBlockPos(p2);
|
|
||||||
sortBoxVerticies(bp1, bp2);
|
|
||||||
vm->initialEmerge(bp1, bp2);
|
|
||||||
}
|
|
||||||
|
|
||||||
LuaVoxelManip::~LuaVoxelManip()
|
LuaVoxelManip::~LuaVoxelManip()
|
||||||
{
|
{
|
||||||
if (!is_mapgen_vm)
|
if (!is_mapgen_vm)
|
||||||
delete vm;
|
delete vm;
|
||||||
}
|
}
|
||||||
|
|
||||||
// LuaVoxelManip()
|
// LuaVoxelManip([p1, p2])
|
||||||
// Creates an LuaVoxelManip and leaves it on top of stack
|
// Creates an LuaVoxelManip and leaves it on top of stack
|
||||||
int LuaVoxelManip::create_object(lua_State *L)
|
int LuaVoxelManip::create_object(lua_State *L)
|
||||||
{
|
{
|
||||||
GET_ENV_PTR;
|
GET_ENV_PTR;
|
||||||
|
|
||||||
Map *map = &(env->getMap());
|
LuaVoxelManip *o = new LuaVoxelManip(&env->getMap());
|
||||||
LuaVoxelManip *o = (lua_istable(L, 1) && lua_istable(L, 2)) ?
|
|
||||||
new LuaVoxelManip(map, check_v3s16(L, 1), check_v3s16(L, 2)) :
|
|
||||||
new LuaVoxelManip(map);
|
|
||||||
|
|
||||||
*(void **)(lua_newuserdata(L, sizeof(void *))) = o;
|
*(void **)(lua_newuserdata(L, sizeof(void *))) = o;
|
||||||
luaL_getmetatable(L, className);
|
luaL_getmetatable(L, className);
|
||||||
lua_setmetatable(L, -2);
|
lua_setmetatable(L, -2);
|
||||||
|
|
||||||
|
// Call read_from_map so we don't have to duplicate it here
|
||||||
|
const int top = lua_gettop(L);
|
||||||
|
if (lua_istable(L, 1) && lua_istable(L, 2)) {
|
||||||
|
lua_pushcfunction(L, l_read_from_map);
|
||||||
|
lua_pushvalue(L, top);
|
||||||
|
lua_pushvalue(L, 1);
|
||||||
|
lua_pushvalue(L, 2);
|
||||||
|
lua_call(L, 3, 0);
|
||||||
|
}
|
||||||
|
lua_settop(L, top);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,6 @@ public:
|
||||||
MMVManip *vm = nullptr;
|
MMVManip *vm = nullptr;
|
||||||
|
|
||||||
LuaVoxelManip(MMVManip *mmvm, bool is_mapgen_vm);
|
LuaVoxelManip(MMVManip *mmvm, bool is_mapgen_vm);
|
||||||
LuaVoxelManip(Map *map, v3s16 p1, v3s16 p2);
|
|
||||||
LuaVoxelManip(Map *map);
|
LuaVoxelManip(Map *map);
|
||||||
~LuaVoxelManip();
|
~LuaVoxelManip();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue