From fb2bc956b18bd70a47bff00d5726d4754867856a Mon Sep 17 00:00:00 2001 From: kwolekr Date: Wed, 10 Dec 2014 00:37:09 -0500 Subject: Noise: Create a deep copy of NoiseParams --- src/script/lua_api/l_mapgen.cpp | 9 ++++++++- src/script/lua_api/l_noise.cpp | 8 ++++---- 2 files changed, 12 insertions(+), 5 deletions(-) (limited to 'src/script') diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp index 0e3d219a4..3176b920c 100644 --- a/src/script/lua_api/l_mapgen.cpp +++ b/src/script/lua_api/l_mapgen.cpp @@ -546,7 +546,14 @@ int ModApiMapgen::l_register_ore(lua_State *L) getflagsfield(L, index, "flags", flagdesc_ore, &ore->flags, NULL); lua_getfield(L, index, "noise_params"); - ore->np = get_noiseparams(L, -1); + if (read_noiseparams(L, -1, &ore->np)) { + ore->flags |= OREFLAG_USE_NOISE; + } else if (ore->NEEDS_NOISE) { + errorstream << "register_ore: specified ore type requires valid " + "noise parameters" << std::endl; + delete ore; + return 0; + } lua_pop(L, 1); u32 id = oremgr->add(ore); diff --git a/src/script/lua_api/l_noise.cpp b/src/script/lua_api/l_noise.cpp index 2a57df0f6..c66f54e6f 100644 --- a/src/script/lua_api/l_noise.cpp +++ b/src/script/lua_api/l_noise.cpp @@ -161,7 +161,7 @@ int LuaPerlinNoiseMap::l_get2dMap(lua_State *L) for (int y = 0; y != n->sy; y++) { lua_newtable(L); for (int x = 0; x != n->sx; x++) { - float noiseval = n->np->offset + n->np->scale * n->result[i++]; + float noiseval = n->np.offset + n->np.scale * n->result[i++]; lua_pushnumber(L, noiseval); lua_rawseti(L, -2, x + 1); } @@ -185,7 +185,7 @@ int LuaPerlinNoiseMap::l_get2dMap_flat(lua_State *L) lua_newtable(L); for (int i = 0; i != maplen; i++) { - float noiseval = n->np->offset + n->np->scale * n->result[i]; + float noiseval = n->np.offset + n->np.scale * n->result[i]; lua_pushnumber(L, noiseval); lua_rawseti(L, -2, i + 1); } @@ -210,7 +210,7 @@ int LuaPerlinNoiseMap::l_get3dMap(lua_State *L) for (int y = 0; y != n->sy; y++) { lua_newtable(L); for (int x = 0; x != n->sx; x++) { - lua_pushnumber(L, n->np->offset + n->np->scale * n->result[i++]); + lua_pushnumber(L, n->np.offset + n->np.scale * n->result[i++]); lua_rawseti(L, -2, x + 1); } lua_rawseti(L, -2, y + 1); @@ -236,7 +236,7 @@ int LuaPerlinNoiseMap::l_get3dMap_flat(lua_State *L) lua_newtable(L); for (int i = 0; i != maplen; i++) { - float noiseval = n->np->offset + n->np->scale * n->result[i]; + float noiseval = n->np.offset + n->np.scale * n->result[i]; lua_pushnumber(L, noiseval); lua_rawseti(L, -2, i + 1); } -- cgit v1.2.3