summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Snelling <jordach.snelling@gmail.com>2020-03-08 15:13:36 +0000
committerGitHub <noreply@github.com>2020-03-08 16:13:36 +0100
commitb9a0626d8893324aa6be41607efbc131d23eee2d (patch)
treecd532ba9afe8a460676738f70fd3ac692f6d5f95
parent23c907befea02005e2c0c87fca0131b60aace18a (diff)
downloadminetest-b9a0626d8893324aa6be41607efbc131d23eee2d.tar.gz
minetest-b9a0626d8893324aa6be41607efbc131d23eee2d.tar.bz2
minetest-b9a0626d8893324aa6be41607efbc131d23eee2d.zip
Fix star visilibity and documentation (since 946c03c6)
Fix memory leak (unused allocation) Fix star rendering Rename sky color struct Fix stars on android Remove extraneous .data() from android star draw
-rw-r--r--doc/lua_api.txt2
-rw-r--r--src/client/sky.cpp35
-rw-r--r--src/script/lua_api/l_object.cpp2
-rw-r--r--src/skyparams.h9
4 files changed, 16 insertions, 32 deletions
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index a603a5a37..5a3e37292 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -6044,7 +6044,7 @@ object you are working with still exists.
* `star_color`: ColorSpec, sets the colors of the stars,
alpha channel is used to set overall star brightness.
(default: `#ebebff69`)
- * `size`: Float controlling the overall size of the stars (default: `1`)
+ * `scale`: Float controlling the overall size of the stars (default: `1`)
* `get_stars()`: returns a table with the current stars parameters as in
`set_stars`.
* `set_clouds(parameters)`: set cloud parameters
diff --git a/src/client/sky.cpp b/src/client/sky.cpp
index f2cab2f0f..7a7b188ce 100644
--- a/src/client/sky.cpp
+++ b/src/client/sky.cpp
@@ -724,10 +724,10 @@ void Sky::draw_stars(video::IVideoDriver * driver, float wicked_time_of_day)
if (m_star_params.starcolor.getAlpha() < 1)
return;
#if ENABLE_GLES
- u16 *indices = new u16[m_star_count * 3];
+ u16 *indices = new u16[m_star_params.count * 3];
video::S3DVertex *vertices =
- new video::S3DVertex[m_star_count * 3];
- for (u32 i = 0; i < m_star_count; i++) {
+ new video::S3DVertex[m_star_params.count * 3];
+ for (u32 i = 0; i < m_star_params.count; i++) {
indices[i * 3 + 0] = i * 3 + 0;
indices[i * 3 + 1] = i * 3 + 1;
indices[i * 3 + 2] = i * 3 + 2;
@@ -750,8 +750,8 @@ void Sky::draw_stars(video::IVideoDriver * driver, float wicked_time_of_day)
vertices[i * 3 + 2].Pos = p2;
vertices[i * 3 + 2].Color = starcolor;
}
- driver->drawIndexedTriangleList(vertices.data(), m_star_count * 3,
- indices.data(), m_star_count);
+ driver->drawIndexedTriangleList(vertices, m_star_params.count * 3,
+ indices, m_star_params.count);
delete[] indices;
delete[] vertices;
#else
@@ -864,7 +864,7 @@ void Sky::setSunTexture(std::string sun_texture,
}
}
-void Sky::setSunriseTexture(std::string sunglow_texture,
+void Sky::setSunriseTexture(std::string sunglow_texture,
ITextureSource* tsrc)
{
// Ignore matching textures (with modifiers) entirely.
@@ -876,7 +876,7 @@ void Sky::setSunriseTexture(std::string sunglow_texture,
);
}
-void Sky::setMoonTexture(std::string moon_texture,
+void Sky::setMoonTexture(std::string moon_texture,
std::string moon_tonemap, ITextureSource *tsrc)
{
// Ignore matching textures (with modifiers) entirely,
@@ -914,25 +914,8 @@ void Sky::setMoonTexture(std::string moon_texture,
void Sky::setStarCount(u16 star_count, bool force_update)
{
- // Force updating star count at game init.
- if (force_update) {
- m_star_params.count = star_count;
- m_stars.clear();
- // Rebuild the stars surrounding the camera
- for (u16 i = 0; i < star_count; i++) {
- v3f star = v3f(
- myrand_range(-10000, 10000),
- myrand_range(-10000, 10000),
- myrand_range(-10000, 10000)
- );
-
- star.normalize();
- m_stars.emplace_back(star);
- }
- // Ignore changing star count if the new value is identical
- } else if (m_star_params.count == star_count)
- return;
- else {
+ // Allow force updating star count at game init.
+ if (m_star_params.count != star_count || force_update) {
m_star_params.count = star_count;
m_stars.clear();
// Rebuild the stars surrounding the camera
diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp
index 70e21f088..23ed1ffe0 100644
--- a/src/script/lua_api/l_object.cpp
+++ b/src/script/lua_api/l_object.cpp
@@ -2059,7 +2059,7 @@ int ObjectRef::l_set_stars(lua_State *L)
lua_pop(L, 1);
star_params.scale = getfloatfield_default(L, 2,
- "size", star_params.scale);
+ "scale", star_params.scale);
getServer(L)->setStars(player, star_params);
lua_pushboolean(L, true);
diff --git a/src/skyparams.h b/src/skyparams.h
index 877907e31..9fdfd89da 100644
--- a/src/skyparams.h
+++ b/src/skyparams.h
@@ -19,7 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#pragma once
-struct skycolor
+struct SkyColor
{
video::SColor day_sky;
video::SColor day_horizon;
@@ -36,7 +36,7 @@ struct SkyboxParams
std::string type;
std::vector<std::string> textures;
bool clouds;
- skycolor sky_color;
+ SkyColor sky_color;
video::SColor sun_tint;
video::SColor moon_tint;
std::string tint_type;
@@ -72,9 +72,9 @@ struct StarParams
class SkyboxDefaults
{
public:
- const skycolor getSkyColorDefaults()
+ const SkyColor getSkyColorDefaults()
{
- skycolor sky;
+ SkyColor sky;
// Horizon colors
sky.day_horizon = video::SColor(255, 155, 193, 240);
sky.indoors = video::SColor(255, 100, 100, 100);
@@ -112,6 +112,7 @@ public:
const StarParams getStarDefaults()
{
StarParams stars;
+ stars.visible = true;
stars.count = 1000;
stars.starcolor = video::SColor(105, 235, 235, 255);
stars.scale = 1;