mirror of
https://github.com/minetest/minetest.git
synced 2024-11-23 16:13:46 +01:00
Add EnvRef:get_node_light(pos, timeofday)
This commit is contained in:
parent
4cc117ddf6
commit
09c48b60bd
@ -146,6 +146,8 @@
|
||||
-- ^ Returns {name="ignore", ...} for unloaded area
|
||||
-- - get_node_or_nil(pos)
|
||||
-- ^ Returns nil for unloaded area
|
||||
-- - get_node_light(pos, timeofday) -> 0...15 or nil
|
||||
-- ^ timeofday: nil = current time, 0 = night, 0.5 = day
|
||||
-- - add_luaentity(pos, name)
|
||||
-- - add_item(pos, itemstring)
|
||||
-- - add_rat(pos)
|
||||
|
@ -2402,6 +2402,34 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
// EnvRef:get_node_light(pos, timeofday)
|
||||
// pos = {x=num, y=num, z=num}
|
||||
// timeofday: nil = current time, 0 = night, 0.5 = day
|
||||
static int l_get_node_light(lua_State *L)
|
||||
{
|
||||
EnvRef *o = checkobject(L, 1);
|
||||
ServerEnvironment *env = o->m_env;
|
||||
if(env == NULL) return 0;
|
||||
// Do it
|
||||
v3s16 pos = readpos(L, 2);
|
||||
u32 time_of_day = env->getTimeOfDay();
|
||||
if(lua_isnumber(L, 3))
|
||||
time_of_day = 24000.0 * lua_tonumber(L, 3);
|
||||
time_of_day %= 24000;
|
||||
u32 dnr = time_to_daynight_ratio(time_of_day);
|
||||
MapNode n = env->getMap().getNodeNoEx(pos);
|
||||
try{
|
||||
MapNode n = env->getMap().getNode(pos);
|
||||
INodeDefManager *ndef = env->getGameDef()->ndef();
|
||||
lua_pushinteger(L, n.getLightBlend(dnr, ndef));
|
||||
return 1;
|
||||
} catch(InvalidPositionException &e)
|
||||
{
|
||||
lua_pushnil(L);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// EnvRef:add_luaentity(pos, entityname)
|
||||
// pos = {x=num, y=num, z=num}
|
||||
static int l_add_luaentity(lua_State *L)
|
||||
@ -2571,6 +2599,7 @@ const luaL_reg EnvRef::methods[] = {
|
||||
method(EnvRef, remove_node),
|
||||
method(EnvRef, get_node),
|
||||
method(EnvRef, get_node_or_nil),
|
||||
method(EnvRef, get_node_light),
|
||||
method(EnvRef, add_luaentity),
|
||||
method(EnvRef, add_item),
|
||||
method(EnvRef, add_rat),
|
||||
|
Loading…
Reference in New Issue
Block a user