// insert_area(edge1, edge2, data) int LuaAreaStore::l_insert_area(lua_State *L) { NO_MAP_LOCK_REQUIRED; LuaAreaStore *o = checkobject(L, 1); AreaStore *ast = o->as; Area a; a.minedge = check_v3s16(L, 2); a.maxedge = check_v3s16(L, 3); a.extremifyEdges(); a.id = ast->getFreeId(a.minedge, a.maxedge); if (a.id == AREA_ID_INVALID) { // couldn't get free id lua_pushnil(L); return 1; } size_t d_len; const char *data = luaL_checklstring(L, 4, &d_len); a.data = std::string(data, d_len); ast->insertArea(a); lua_pushnumber(L, a.id); return 1; }
// insert_area(edge1, edge2, data, id) int LuaAreaStore::l_insert_area(lua_State *L) { NO_MAP_LOCK_REQUIRED; LuaAreaStore *o = checkobject(L, 1); AreaStore *ast = o->as; Area a(check_v3s16(L, 2), check_v3s16(L, 3)); size_t d_len; const char *data = luaL_checklstring(L, 4, &d_len); a.data = std::string(data, d_len); if (lua_isnumber(L, 5)) a.id = lua_tonumber(L, 5); if (!ast->insertArea(&a)) return 0; lua_pushnumber(L, a.id); return 1; }