mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 10:03:45 +01:00
Allow get_sky to return a table (#11963)
This commit is contained in:
parent
f2d1295fe6
commit
44fc888bd6
@ -22,6 +22,7 @@ core.features = {
|
|||||||
degrotate_240_steps = true,
|
degrotate_240_steps = true,
|
||||||
abm_min_max_y = true,
|
abm_min_max_y = true,
|
||||||
dynamic_add_media_table = true,
|
dynamic_add_media_table = true,
|
||||||
|
get_sky_as_table = true,
|
||||||
}
|
}
|
||||||
|
|
||||||
function core.has_feature(arg)
|
function core.has_feature(arg)
|
||||||
|
@ -4634,6 +4634,8 @@ Utilities
|
|||||||
abm_min_max_y = true,
|
abm_min_max_y = true,
|
||||||
-- dynamic_add_media supports passing a table with options (5.5.0)
|
-- dynamic_add_media supports passing a table with options (5.5.0)
|
||||||
dynamic_add_media_table = true,
|
dynamic_add_media_table = true,
|
||||||
|
-- allows get_sky to return a table instead of separate values (5.6.0)
|
||||||
|
get_sky_as_table = true,
|
||||||
}
|
}
|
||||||
|
|
||||||
* `minetest.has_feature(arg)`: returns `boolean, missing_features`
|
* `minetest.has_feature(arg)`: returns `boolean, missing_features`
|
||||||
@ -6869,9 +6871,15 @@ object you are working with still exists.
|
|||||||
* `"plain"`: Uses 0 textures, `bgcolor` used
|
* `"plain"`: Uses 0 textures, `bgcolor` used
|
||||||
* `clouds`: Boolean for whether clouds appear in front of `"skybox"` or
|
* `clouds`: Boolean for whether clouds appear in front of `"skybox"` or
|
||||||
`"plain"` custom skyboxes (default: `true`)
|
`"plain"` custom skyboxes (default: `true`)
|
||||||
* `get_sky()`: returns base_color, type, table of textures, clouds.
|
* `get_sky(as_table)`:
|
||||||
* `get_sky_color()`: returns a table with the `sky_color` parameters as in
|
* `as_table`: boolean that determines whether the deprecated version of this
|
||||||
`set_sky`.
|
function is being used.
|
||||||
|
* `true` returns a table containing sky parameters as defined in `set_sky(sky_parameters)`.
|
||||||
|
* Deprecated: `false` or `nil` returns base_color, type, table of textures,
|
||||||
|
clouds.
|
||||||
|
* `get_sky_color()`:
|
||||||
|
* Deprecated: Use `get_sky(as_table)` instead.
|
||||||
|
* returns a table with the `sky_color` parameters as in `set_sky`.
|
||||||
* `set_sun(sun_parameters)`:
|
* `set_sun(sun_parameters)`:
|
||||||
* Passing no arguments resets the sun to its default values.
|
* Passing no arguments resets the sun to its default values.
|
||||||
* `sun_parameters` is a table with the following optional fields:
|
* `sun_parameters` is a table with the following optional fields:
|
||||||
|
@ -1874,32 +1874,35 @@ int ObjectRef::l_set_sky(lua_State *L)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// get_sky(self)
|
static void push_sky_color(lua_State *L, const SkyboxParams ¶ms)
|
||||||
int ObjectRef::l_get_sky(lua_State *L)
|
|
||||||
{
|
{
|
||||||
NO_MAP_LOCK_REQUIRED;
|
|
||||||
ObjectRef *ref = checkobject(L, 1);
|
|
||||||
RemotePlayer *player = getplayer(ref);
|
|
||||||
if (player == nullptr)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
SkyboxParams skybox_params = player->getSkyParams();
|
|
||||||
|
|
||||||
push_ARGB8(L, skybox_params.bgcolor);
|
|
||||||
lua_pushlstring(L, skybox_params.type.c_str(), skybox_params.type.size());
|
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_newtable(L);
|
||||||
s16 i = 1;
|
if (params.type == "regular") {
|
||||||
for (const std::string &texture : skybox_params.textures) {
|
push_ARGB8(L, params.sky_color.day_sky);
|
||||||
lua_pushlstring(L, texture.c_str(), texture.size());
|
lua_setfield(L, -2, "day_sky");
|
||||||
lua_rawseti(L, -2, i++);
|
push_ARGB8(L, params.sky_color.day_horizon);
|
||||||
|
lua_setfield(L, -2, "day_horizon");
|
||||||
|
push_ARGB8(L, params.sky_color.dawn_sky);
|
||||||
|
lua_setfield(L, -2, "dawn_sky");
|
||||||
|
push_ARGB8(L, params.sky_color.dawn_horizon);
|
||||||
|
lua_setfield(L, -2, "dawn_horizon");
|
||||||
|
push_ARGB8(L, params.sky_color.night_sky);
|
||||||
|
lua_setfield(L, -2, "night_sky");
|
||||||
|
push_ARGB8(L, params.sky_color.night_horizon);
|
||||||
|
lua_setfield(L, -2, "night_horizon");
|
||||||
|
push_ARGB8(L, params.sky_color.indoors);
|
||||||
|
lua_setfield(L, -2, "indoors");
|
||||||
}
|
}
|
||||||
lua_pushboolean(L, skybox_params.clouds);
|
push_ARGB8(L, params.fog_sun_tint);
|
||||||
return 4;
|
lua_setfield(L, -2, "fog_sun_tint");
|
||||||
|
push_ARGB8(L, params.fog_moon_tint);
|
||||||
|
lua_setfield(L, -2, "fog_moon_tint");
|
||||||
|
lua_pushstring(L, params.fog_tint_type.c_str());
|
||||||
|
lua_setfield(L, -2, "fog_tint_type");
|
||||||
}
|
}
|
||||||
|
|
||||||
// get_sky_color(self)
|
// get_sky(self, as_table)
|
||||||
int ObjectRef::l_get_sky_color(lua_State *L)
|
int ObjectRef::l_get_sky(lua_State *L)
|
||||||
{
|
{
|
||||||
NO_MAP_LOCK_REQUIRED;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
ObjectRef *ref = checkobject(L, 1);
|
ObjectRef *ref = checkobject(L, 1);
|
||||||
@ -1909,29 +1912,59 @@ int ObjectRef::l_get_sky_color(lua_State *L)
|
|||||||
|
|
||||||
const SkyboxParams &skybox_params = player->getSkyParams();
|
const SkyboxParams &skybox_params = player->getSkyParams();
|
||||||
|
|
||||||
lua_newtable(L);
|
// handle the deprecated version
|
||||||
if (skybox_params.type == "regular") {
|
if (!readParam<bool>(L, 2, false)) {
|
||||||
push_ARGB8(L, skybox_params.sky_color.day_sky);
|
log_deprecated(L, "Deprecated call to get_sky, please check lua_api.txt");
|
||||||
lua_setfield(L, -2, "day_sky");
|
|
||||||
push_ARGB8(L, skybox_params.sky_color.day_horizon);
|
push_ARGB8(L, skybox_params.bgcolor);
|
||||||
lua_setfield(L, -2, "day_horizon");
|
lua_pushlstring(L, skybox_params.type.c_str(), skybox_params.type.size());
|
||||||
push_ARGB8(L, skybox_params.sky_color.dawn_sky);
|
|
||||||
lua_setfield(L, -2, "dawn_sky");
|
lua_newtable(L);
|
||||||
push_ARGB8(L, skybox_params.sky_color.dawn_horizon);
|
s16 i = 1;
|
||||||
lua_setfield(L, -2, "dawn_horizon");
|
for (const std::string &texture : skybox_params.textures) {
|
||||||
push_ARGB8(L, skybox_params.sky_color.night_sky);
|
lua_pushlstring(L, texture.c_str(), texture.size());
|
||||||
lua_setfield(L, -2, "night_sky");
|
lua_rawseti(L, -2, i++);
|
||||||
push_ARGB8(L, skybox_params.sky_color.night_horizon);
|
}
|
||||||
lua_setfield(L, -2, "night_horizon");
|
lua_pushboolean(L, skybox_params.clouds);
|
||||||
push_ARGB8(L, skybox_params.sky_color.indoors);
|
return 4;
|
||||||
lua_setfield(L, -2, "indoors");
|
|
||||||
}
|
}
|
||||||
push_ARGB8(L, skybox_params.fog_sun_tint);
|
|
||||||
lua_setfield(L, -2, "fog_sun_tint");
|
lua_newtable(L);
|
||||||
push_ARGB8(L, skybox_params.fog_moon_tint);
|
push_ARGB8(L, skybox_params.bgcolor);
|
||||||
lua_setfield(L, -2, "fog_moon_tint");
|
lua_setfield(L, -2, "base_color");
|
||||||
lua_pushstring(L, skybox_params.fog_tint_type.c_str());
|
lua_pushlstring(L, skybox_params.type.c_str(), skybox_params.type.size());
|
||||||
lua_setfield(L, -2, "fog_tint_type");
|
lua_setfield(L, -2, "type");
|
||||||
|
|
||||||
|
lua_newtable(L);
|
||||||
|
s16 i = 1;
|
||||||
|
for (const std::string &texture : skybox_params.textures) {
|
||||||
|
lua_pushlstring(L, texture.c_str(), texture.size());
|
||||||
|
lua_rawseti(L, -2, i++);
|
||||||
|
}
|
||||||
|
lua_setfield(L, -2, "textures");
|
||||||
|
lua_pushboolean(L, skybox_params.clouds);
|
||||||
|
lua_setfield(L, -2, "clouds");
|
||||||
|
|
||||||
|
push_sky_color(L, skybox_params);
|
||||||
|
lua_setfield(L, -2, "sky_color");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
// get_sky_color(self)
|
||||||
|
int ObjectRef::l_get_sky_color(lua_State *L)
|
||||||
|
{
|
||||||
|
NO_MAP_LOCK_REQUIRED;
|
||||||
|
|
||||||
|
log_deprecated(L, "Deprecated call to get_sky_color, use get_sky instead");
|
||||||
|
|
||||||
|
ObjectRef *ref = checkobject(L, 1);
|
||||||
|
RemotePlayer *player = getplayer(ref);
|
||||||
|
if (player == nullptr)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
const SkyboxParams &skybox_params = player->getSkyParams();
|
||||||
|
push_sky_color(L, skybox_params);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,9 +316,10 @@ private:
|
|||||||
// set_sky(self, sky_parameters)
|
// set_sky(self, sky_parameters)
|
||||||
static int l_set_sky(lua_State *L);
|
static int l_set_sky(lua_State *L);
|
||||||
|
|
||||||
// get_sky(self)
|
// get_sky(self, as_table)
|
||||||
static int l_get_sky(lua_State *L);
|
static int l_get_sky(lua_State *L);
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
// get_sky_color(self)
|
// get_sky_color(self)
|
||||||
static int l_get_sky_color(lua_State* L);
|
static int l_get_sky_color(lua_State* L);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user