From 57fc49ea5419cca5d56f7e519792fce14f6350f1 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 24 Mar 2011 14:21:33 -0400 Subject: [PATCH] create new stars when old ones pass --- modes/Starfield.cc | 12 +++++++++++- modes/Starfield.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modes/Starfield.cc b/modes/Starfield.cc index 6efb730..9b0aa19 100644 --- a/modes/Starfield.cc +++ b/modes/Starfield.cc @@ -16,7 +16,9 @@ Starfield::Starfield(GnomeScreensaver & gs) m_last_ticks = ticks; srand(time(NULL) + getpid()); for (int i = 0; i < NUM_STARS; i++) - newStar(i, ticks - (uint64_t) (i * FLYBY_TICKS / (double)NUM_STARS)); + newStar(NUM_STARS - i - 1, + ticks - (uint64_t) (i * FLYBY_TICKS / (double)NUM_STARS)); + m_star_idx = 0; } Starfield::~Starfield() @@ -43,6 +45,14 @@ bool Starfield::expose (GnomeScreensaver & gs) glPopMatrix(); } + while ((m_stars[m_star_idx].create_time + FLYBY_TICKS) <= ticks) + { + newStar(m_star_idx, ticks); + m_star_idx++; + if (m_star_idx >= NUM_STARS) + m_star_idx = 0; + } + m_last_ticks = gs.getTicks(); return true; diff --git a/modes/Starfield.h b/modes/Starfield.h index 9fad64a..506aeb6 100644 --- a/modes/Starfield.h +++ b/modes/Starfield.h @@ -31,6 +31,7 @@ class Starfield : public Mode protected: LogoBox m_logobox; uint64_t m_last_ticks; + int m_star_idx; Star m_stars[NUM_STARS]; void getRandomAxis(float (*axis)[3]); void newStar(int idx, uint64_t ticks);