- switch (mgobj) {
- case MGOBJ_VMANIP: {
- ManualMapVoxelManipulator *vm = mg->vm;
- // VoxelManip object
- *(void **)(lua_newuserdata(L, sizeof(void *))) = vm;
- luaL_getmetatable(L, "VoxelManip");
- lua_setmetatable(L, -2);
- lua_pushliteral(L, "__gc");
- lua_pushcfunction(L, NULL);
- lua_setmetatable(L, -1);
- // VoxelManip data
- int volume = vm->m_area.getVolume();
- lua_newtable(L);
- for (int i = 0; i != volume; i++) {
- lua_Number cid = vm->m_data[i].getContent();
- lua_pushnumber(L, cid);
- lua_rawseti(L, -2, i + 1);
- }
- // emerged min pos
- push_v3s16(L, vm->m_area.MinEdge);
- // emerged max pos
- push_v3s16(L, vm->m_area.MaxEdge);
- nargs = 4;
- break; }