mirror of
https://github.com/minetest/minetest.git
synced 2025-03-14 14:22:36 +01:00
Defer to read_from_map in VoxelManip ctor
concrete problem: the getEmergeThread safety check was missing there
This commit is contained in:
@ -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()
|
||||
{
|
||||
if (!is_mapgen_vm)
|
||||
delete vm;
|
||||
}
|
||||
|
||||
// LuaVoxelManip()
|
||||
// LuaVoxelManip([p1, p2])
|
||||
// Creates an LuaVoxelManip and leaves it on top of stack
|
||||
int LuaVoxelManip::create_object(lua_State *L)
|
||||
{
|
||||
GET_ENV_PTR;
|
||||
|
||||
Map *map = &(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);
|
||||
LuaVoxelManip *o = new LuaVoxelManip(&env->getMap());
|
||||
|
||||
*(void **)(lua_newuserdata(L, sizeof(void *))) = o;
|
||||
luaL_getmetatable(L, className);
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,6 @@ public:
|
||||
MMVManip *vm = nullptr;
|
||||
|
||||
LuaVoxelManip(MMVManip *mmvm, bool is_mapgen_vm);
|
||||
LuaVoxelManip(Map *map, v3s16 p1, v3s16 p2);
|
||||
LuaVoxelManip(Map *map);
|
||||
~LuaVoxelManip();
|
||||
|
||||
|
Reference in New Issue
Block a user