diff options
author | kwolekr <kwolekr@minetest.net> | 2015-05-17 00:07:45 -0400 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2015-05-17 00:07:45 -0400 |
commit | 3ffb5f5761a83773037869d6f6179353c46a650a (patch) | |
tree | b2f53c4e29283562c7b549ebb6fa6d4614299387 /src/script/lua_api/l_noise.cpp | |
parent | 28b2476b11875f0f13335a410f1f00c6a3fd81be (diff) | |
download | hax-minetest-server-3ffb5f5761a83773037869d6f6179353c46a650a.tar.gz hax-minetest-server-3ffb5f5761a83773037869d6f6179353c46a650a.zip |
Add optional buffer param for bulk data array writes in Lua
Diffstat (limited to '')
-rw-r--r-- | src/script/lua_api/l_noise.cpp | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/script/lua_api/l_noise.cpp b/src/script/lua_api/l_noise.cpp index 84f8875b8..86ae9dba7 100644 --- a/src/script/lua_api/l_noise.cpp +++ b/src/script/lua_api/l_noise.cpp @@ -174,9 +174,9 @@ int LuaPerlinNoiseMap::l_get2dMap(lua_State *L) n->perlinMap2D(p.X, p.Y); lua_newtable(L); - for (int y = 0; y != n->sy; y++) { + for (u32 y = 0; y != n->sy; y++) { lua_newtable(L); - for (int x = 0; x != n->sx; x++) { + for (u32 x = 0; x != n->sx; x++) { lua_pushnumber(L, n->result[i++]); lua_rawseti(L, -2, x + 1); } @@ -191,14 +191,19 @@ int LuaPerlinNoiseMap::l_get2dMap_flat(lua_State *L) NO_MAP_LOCK_REQUIRED; LuaPerlinNoiseMap *o = checkobject(L, 1); - v2f p = check_v2f(L, 2); + v2f p = check_v2f(L, 2); + bool use_buffer = lua_istable(L, 3); Noise *n = o->noise; n->perlinMap2D(p.X, p.Y); size_t maplen = n->sx * n->sy; - lua_newtable(L); + if (use_buffer) + lua_pushvalue(L, 3); + else + lua_newtable(L); + for (size_t i = 0; i != maplen; i++) { lua_pushnumber(L, n->result[i]); lua_rawseti(L, -2, i + 1); @@ -222,11 +227,11 @@ int LuaPerlinNoiseMap::l_get3dMap(lua_State *L) n->perlinMap3D(p.X, p.Y, p.Z); lua_newtable(L); - for (int z = 0; z != n->sz; z++) { + for (u32 z = 0; z != n->sz; z++) { lua_newtable(L); - for (int y = 0; y != n->sy; y++) { + for (u32 y = 0; y != n->sy; y++) { lua_newtable(L); - for (int x = 0; x != n->sx; x++) { + for (u32 x = 0; x != n->sx; x++) { lua_pushnumber(L, n->result[i++]); lua_rawseti(L, -2, x + 1); } @@ -243,7 +248,8 @@ int LuaPerlinNoiseMap::l_get3dMap_flat(lua_State *L) NO_MAP_LOCK_REQUIRED; LuaPerlinNoiseMap *o = checkobject(L, 1); - v3f p = check_v3f(L, 2); + v3f p = check_v3f(L, 2); + bool use_buffer = lua_istable(L, 3); if (!o->m_is3d) return 0; @@ -253,7 +259,11 @@ int LuaPerlinNoiseMap::l_get3dMap_flat(lua_State *L) size_t maplen = n->sx * n->sy * n->sz; - lua_newtable(L); + if (use_buffer) + lua_pushvalue(L, 3); + else + lua_newtable(L); + for (size_t i = 0; i != maplen; i++) { lua_pushnumber(L, n->result[i]); lua_rawseti(L, -2, i + 1); |