forked from Mirrorlandia_minetest/minetest
Add 'persistence' alias for Lua noiseparams and validate more vector parameters
This commit is contained in:
parent
687d969c9c
commit
3d4244cc75
@ -983,14 +983,16 @@ bool read_noiseparams(lua_State *L, int index, NoiseParams *np)
|
|||||||
if (!lua_istable(L, index))
|
if (!lua_istable(L, index))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
np->offset = getfloatfield_default(L, index, "offset", 0.0);
|
getfloatfield(L, index, "offset", np->offset);
|
||||||
np->scale = getfloatfield_default(L, index, "scale", 0.0);
|
getfloatfield(L, index, "scale", np->scale);
|
||||||
np->persist = getfloatfield_default(L, index, "persist", 0.0);
|
getfloatfield(L, index, "persist", np->persist);
|
||||||
np->lacunarity = getfloatfield_default(L, index, "lacunarity", 2.0);
|
getfloatfield(L, index, "persistence", np->persist);
|
||||||
np->seed = getintfield_default(L, index, "seed", 0);
|
getfloatfield(L, index, "lacunarity", np->lacunarity);
|
||||||
np->octaves = getintfield_default(L, index, "octaves", 0);
|
getintfield(L, index, "seed", np->seed);
|
||||||
|
getintfield(L, index, "octaves", np->octaves);
|
||||||
|
|
||||||
u32 flags = 0, flagmask = 0;
|
u32 flags = 0;
|
||||||
|
u32 flagmask = 0;
|
||||||
np->flags = getflagsfield(L, index, "flags", flagdesc_noiseparams,
|
np->flags = getflagsfield(L, index, "flags", flagdesc_noiseparams,
|
||||||
&flags, &flagmask) ? flags : NOISE_FLAG_DEFAULTS;
|
&flags, &flagmask) ? flags : NOISE_FLAG_DEFAULTS;
|
||||||
|
|
||||||
|
@ -59,6 +59,19 @@ v2s16 read_v2s16(lua_State *L, int index)
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
v2s16 check_v2s16(lua_State *L, int index)
|
||||||
|
{
|
||||||
|
v2s16 p;
|
||||||
|
luaL_checktype(L, index, LUA_TTABLE);
|
||||||
|
lua_getfield(L, index, "x");
|
||||||
|
p.X = luaL_checknumber(L, -1);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
lua_getfield(L, index, "y");
|
||||||
|
p.Y = luaL_checknumber(L, -1);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
v2s32 read_v2s32(lua_State *L, int index)
|
v2s32 read_v2s32(lua_State *L, int index)
|
||||||
{
|
{
|
||||||
v2s32 p;
|
v2s32 p;
|
||||||
@ -85,6 +98,19 @@ v2f read_v2f(lua_State *L, int index)
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
v2f check_v2f(lua_State *L, int index)
|
||||||
|
{
|
||||||
|
v2f p;
|
||||||
|
luaL_checktype(L, index, LUA_TTABLE);
|
||||||
|
lua_getfield(L, index, "x");
|
||||||
|
p.X = luaL_checknumber(L, -1);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
lua_getfield(L, index, "y");
|
||||||
|
p.Y = luaL_checknumber(L, -1);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
v3f read_v3f(lua_State *L, int index)
|
v3f read_v3f(lua_State *L, int index)
|
||||||
{
|
{
|
||||||
v3f pos;
|
v3f pos;
|
||||||
@ -285,6 +311,32 @@ bool getintfield(lua_State *L, int table,
|
|||||||
return got;
|
return got;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool getintfield(lua_State *L, int table,
|
||||||
|
const char *fieldname, u16 &result)
|
||||||
|
{
|
||||||
|
lua_getfield(L, table, fieldname);
|
||||||
|
bool got = false;
|
||||||
|
if(lua_isnumber(L, -1)){
|
||||||
|
result = lua_tonumber(L, -1);
|
||||||
|
got = true;
|
||||||
|
}
|
||||||
|
lua_pop(L, 1);
|
||||||
|
return got;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getintfield(lua_State *L, int table,
|
||||||
|
const char *fieldname, u32 &result)
|
||||||
|
{
|
||||||
|
lua_getfield(L, table, fieldname);
|
||||||
|
bool got = false;
|
||||||
|
if(lua_isnumber(L, -1)){
|
||||||
|
result = lua_tonumber(L, -1);
|
||||||
|
got = true;
|
||||||
|
}
|
||||||
|
lua_pop(L, 1);
|
||||||
|
return got;
|
||||||
|
}
|
||||||
|
|
||||||
bool getfloatfield(lua_State *L, int table,
|
bool getfloatfield(lua_State *L, int table,
|
||||||
const char *fieldname, float &result)
|
const char *fieldname, float &result)
|
||||||
{
|
{
|
||||||
|
@ -53,6 +53,10 @@ size_t getstringlistfield(lua_State *L, int table,
|
|||||||
std::vector<std::string> *result);
|
std::vector<std::string> *result);
|
||||||
bool getintfield(lua_State *L, int table,
|
bool getintfield(lua_State *L, int table,
|
||||||
const char *fieldname, int &result);
|
const char *fieldname, int &result);
|
||||||
|
bool getintfield(lua_State *L, int table,
|
||||||
|
const char *fieldname, u16 &result);
|
||||||
|
bool getintfield(lua_State *L, int table,
|
||||||
|
const char *fieldname, u32 &result);
|
||||||
void read_groups(lua_State *L, int index,
|
void read_groups(lua_State *L, int index,
|
||||||
std::map<std::string, int> &result);
|
std::map<std::string, int> &result);
|
||||||
bool getboolfield(lua_State *L, int table,
|
bool getboolfield(lua_State *L, int table,
|
||||||
@ -72,6 +76,8 @@ void setboolfield(lua_State *L, int table,
|
|||||||
|
|
||||||
|
|
||||||
v3f checkFloatPos (lua_State *L, int index);
|
v3f checkFloatPos (lua_State *L, int index);
|
||||||
|
v2f check_v2f (lua_State *L, int index);
|
||||||
|
v2s16 check_v2s16 (lua_State *L, int index);
|
||||||
v3f check_v3f (lua_State *L, int index);
|
v3f check_v3f (lua_State *L, int index);
|
||||||
v3s16 check_v3s16 (lua_State *L, int index);
|
v3s16 check_v3s16 (lua_State *L, int index);
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ int LuaPerlinNoise::l_get2d(lua_State *L)
|
|||||||
{
|
{
|
||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
LuaPerlinNoise *o = checkobject(L, 1);
|
LuaPerlinNoise *o = checkobject(L, 1);
|
||||||
v2f p = read_v2f(L, 2);
|
v2f p = check_v2f(L, 2);
|
||||||
lua_Number val = NoisePerlin2D(&o->np, p.X, p.Y, 0);
|
lua_Number val = NoisePerlin2D(&o->np, p.X, p.Y, 0);
|
||||||
lua_pushnumber(L, val);
|
lua_pushnumber(L, val);
|
||||||
return 1;
|
return 1;
|
||||||
@ -54,7 +54,7 @@ int LuaPerlinNoise::l_get3d(lua_State *L)
|
|||||||
{
|
{
|
||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
LuaPerlinNoise *o = checkobject(L, 1);
|
LuaPerlinNoise *o = checkobject(L, 1);
|
||||||
v3f p = read_v3f(L, 2);
|
v3f p = check_v3f(L, 2);
|
||||||
lua_Number val = NoisePerlin3D(&o->np, p.X, p.Y, p.Z, 0);
|
lua_Number val = NoisePerlin3D(&o->np, p.X, p.Y, p.Z, 0);
|
||||||
lua_pushnumber(L, val);
|
lua_pushnumber(L, val);
|
||||||
return 1;
|
return 1;
|
||||||
@ -168,7 +168,7 @@ int LuaPerlinNoiseMap::l_get2dMap(lua_State *L)
|
|||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
||||||
LuaPerlinNoiseMap *o = checkobject(L, 1);
|
LuaPerlinNoiseMap *o = checkobject(L, 1);
|
||||||
v2f p = read_v2f(L, 2);
|
v2f p = check_v2f(L, 2);
|
||||||
|
|
||||||
Noise *n = o->noise;
|
Noise *n = o->noise;
|
||||||
n->perlinMap2D(p.X, p.Y);
|
n->perlinMap2D(p.X, p.Y);
|
||||||
@ -191,7 +191,7 @@ int LuaPerlinNoiseMap::l_get2dMap_flat(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
|
|
||||||
LuaPerlinNoiseMap *o = checkobject(L, 1);
|
LuaPerlinNoiseMap *o = checkobject(L, 1);
|
||||||
v2f p = read_v2f(L, 2);
|
v2f p = check_v2f(L, 2);
|
||||||
|
|
||||||
Noise *n = o->noise;
|
Noise *n = o->noise;
|
||||||
n->perlinMap2D(p.X, p.Y);
|
n->perlinMap2D(p.X, p.Y);
|
||||||
@ -213,7 +213,7 @@ int LuaPerlinNoiseMap::l_get3dMap(lua_State *L)
|
|||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
||||||
LuaPerlinNoiseMap *o = checkobject(L, 1);
|
LuaPerlinNoiseMap *o = checkobject(L, 1);
|
||||||
v3f p = read_v3f(L, 2);
|
v3f p = check_v3f(L, 2);
|
||||||
|
|
||||||
if (!o->m_is3d)
|
if (!o->m_is3d)
|
||||||
return 0;
|
return 0;
|
||||||
@ -243,7 +243,7 @@ int LuaPerlinNoiseMap::l_get3dMap_flat(lua_State *L)
|
|||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
|
|
||||||
LuaPerlinNoiseMap *o = checkobject(L, 1);
|
LuaPerlinNoiseMap *o = checkobject(L, 1);
|
||||||
v3f p = read_v3f(L, 2);
|
v3f p = check_v3f(L, 2);
|
||||||
|
|
||||||
if (!o->m_is3d)
|
if (!o->m_is3d)
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user