Navigation Menu

Skip to content

Commit

Permalink
Reuse seed when updating stars
Browse files Browse the repository at this point in the history
The only currently relevant parameter is scale which can now be changed
without resetting stars position
  • Loading branch information
numberZero authored and lhofhansl committed Nov 26, 2020
1 parent 3077afc commit 560627e
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 3 deletions.
8 changes: 5 additions & 3 deletions src/client/sky.cpp
Expand Up @@ -830,6 +830,7 @@ void Sky::setStarCount(u16 star_count, bool force_update)
// Allow force updating star count at game init.
if (m_star_params.count != star_count || force_update) {
m_star_params.count = star_count;
m_seed = (u64)myrand() << 32 | myrand();
updateStars();
}
}
Expand All @@ -847,12 +848,13 @@ void Sky::updateStars() {
m_stars->Vertices.reallocate(4 * m_star_params.count);
m_stars->Indices.reallocate(6 * m_star_params.count);

PcgRandom rgen(m_seed);
float d = (0.006 / 2) * m_star_params.scale;
for (u16 i = 0; i < m_star_params.count; i++) {
v3f r = v3f(
myrand_range(-10000, 10000),
myrand_range(-10000, 10000),
myrand_range(-10000, 10000)
rgen.range(-10000, 10000),
rgen.range(-10000, 10000),
rgen.range(-10000, 10000)
);
core::CMatrix4<f32> a;
a.buildRotateFromTo(v3f(0, 1, 0), r);
Expand Down
1 change: 1 addition & 0 deletions src/client/sky.h
Expand Up @@ -179,6 +179,7 @@ class Sky : public scene::ISceneNode

bool m_default_tint = true;

u64 m_seed = 0;
irr_ptr<scene::SMeshBuffer> m_stars;

video::ITexture *m_sun_texture;
Expand Down

0 comments on commit 560627e

Please sign in to comment.