mirror of
https://github.com/minetest/minetest.git
synced 2024-09-19 23:10:46 +03:00
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
This commit is contained in:
parent
23c907befe
commit
b9a0626d88
@ -6044,7 +6044,7 @@ object you are working with still exists.
|
|||||||
* `star_color`: ColorSpec, sets the colors of the stars,
|
* `star_color`: ColorSpec, sets the colors of the stars,
|
||||||
alpha channel is used to set overall star brightness.
|
alpha channel is used to set overall star brightness.
|
||||||
(default: `#ebebff69`)
|
(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
|
* `get_stars()`: returns a table with the current stars parameters as in
|
||||||
`set_stars`.
|
`set_stars`.
|
||||||
* `set_clouds(parameters)`: set cloud parameters
|
* `set_clouds(parameters)`: set cloud parameters
|
||||||
|
@ -724,10 +724,10 @@ void Sky::draw_stars(video::IVideoDriver * driver, float wicked_time_of_day)
|
|||||||
if (m_star_params.starcolor.getAlpha() < 1)
|
if (m_star_params.starcolor.getAlpha() < 1)
|
||||||
return;
|
return;
|
||||||
#if ENABLE_GLES
|
#if ENABLE_GLES
|
||||||
u16 *indices = new u16[m_star_count * 3];
|
u16 *indices = new u16[m_star_params.count * 3];
|
||||||
video::S3DVertex *vertices =
|
video::S3DVertex *vertices =
|
||||||
new video::S3DVertex[m_star_count * 3];
|
new video::S3DVertex[m_star_params.count * 3];
|
||||||
for (u32 i = 0; i < m_star_count; i++) {
|
for (u32 i = 0; i < m_star_params.count; i++) {
|
||||||
indices[i * 3 + 0] = i * 3 + 0;
|
indices[i * 3 + 0] = i * 3 + 0;
|
||||||
indices[i * 3 + 1] = i * 3 + 1;
|
indices[i * 3 + 1] = i * 3 + 1;
|
||||||
indices[i * 3 + 2] = i * 3 + 2;
|
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].Pos = p2;
|
||||||
vertices[i * 3 + 2].Color = starcolor;
|
vertices[i * 3 + 2].Color = starcolor;
|
||||||
}
|
}
|
||||||
driver->drawIndexedTriangleList(vertices.data(), m_star_count * 3,
|
driver->drawIndexedTriangleList(vertices, m_star_params.count * 3,
|
||||||
indices.data(), m_star_count);
|
indices, m_star_params.count);
|
||||||
delete[] indices;
|
delete[] indices;
|
||||||
delete[] vertices;
|
delete[] vertices;
|
||||||
#else
|
#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)
|
ITextureSource* tsrc)
|
||||||
{
|
{
|
||||||
// Ignore matching textures (with modifiers) entirely.
|
// 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)
|
std::string moon_tonemap, ITextureSource *tsrc)
|
||||||
{
|
{
|
||||||
// Ignore matching textures (with modifiers) entirely,
|
// 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)
|
void Sky::setStarCount(u16 star_count, bool force_update)
|
||||||
{
|
{
|
||||||
// Force updating star count at game init.
|
// Allow force updating star count at game init.
|
||||||
if (force_update) {
|
if (m_star_params.count != star_count || 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 {
|
|
||||||
m_star_params.count = star_count;
|
m_star_params.count = star_count;
|
||||||
m_stars.clear();
|
m_stars.clear();
|
||||||
// Rebuild the stars surrounding the camera
|
// Rebuild the stars surrounding the camera
|
||||||
|
@ -2059,7 +2059,7 @@ int ObjectRef::l_set_stars(lua_State *L)
|
|||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
|
||||||
star_params.scale = getfloatfield_default(L, 2,
|
star_params.scale = getfloatfield_default(L, 2,
|
||||||
"size", star_params.scale);
|
"scale", star_params.scale);
|
||||||
|
|
||||||
getServer(L)->setStars(player, star_params);
|
getServer(L)->setStars(player, star_params);
|
||||||
lua_pushboolean(L, true);
|
lua_pushboolean(L, true);
|
||||||
|
@ -19,7 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
struct skycolor
|
struct SkyColor
|
||||||
{
|
{
|
||||||
video::SColor day_sky;
|
video::SColor day_sky;
|
||||||
video::SColor day_horizon;
|
video::SColor day_horizon;
|
||||||
@ -36,7 +36,7 @@ struct SkyboxParams
|
|||||||
std::string type;
|
std::string type;
|
||||||
std::vector<std::string> textures;
|
std::vector<std::string> textures;
|
||||||
bool clouds;
|
bool clouds;
|
||||||
skycolor sky_color;
|
SkyColor sky_color;
|
||||||
video::SColor sun_tint;
|
video::SColor sun_tint;
|
||||||
video::SColor moon_tint;
|
video::SColor moon_tint;
|
||||||
std::string tint_type;
|
std::string tint_type;
|
||||||
@ -72,9 +72,9 @@ struct StarParams
|
|||||||
class SkyboxDefaults
|
class SkyboxDefaults
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
const skycolor getSkyColorDefaults()
|
const SkyColor getSkyColorDefaults()
|
||||||
{
|
{
|
||||||
skycolor sky;
|
SkyColor sky;
|
||||||
// Horizon colors
|
// Horizon colors
|
||||||
sky.day_horizon = video::SColor(255, 155, 193, 240);
|
sky.day_horizon = video::SColor(255, 155, 193, 240);
|
||||||
sky.indoors = video::SColor(255, 100, 100, 100);
|
sky.indoors = video::SColor(255, 100, 100, 100);
|
||||||
@ -112,6 +112,7 @@ public:
|
|||||||
const StarParams getStarDefaults()
|
const StarParams getStarDefaults()
|
||||||
{
|
{
|
||||||
StarParams stars;
|
StarParams stars;
|
||||||
|
stars.visible = true;
|
||||||
stars.count = 1000;
|
stars.count = 1000;
|
||||||
stars.starcolor = video::SColor(105, 235, 235, 255);
|
stars.starcolor = video::SColor(105, 235, 235, 255);
|
||||||
stars.scale = 1;
|
stars.scale = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user