rework addRing(); consider LBStruct.offset the offset when created
This commit is contained in:
parent
2cab647bcb
commit
878b441742
@ -35,6 +35,12 @@ bool Tunnel::expose (GnomeScreensaver & gs)
|
|||||||
m_last_ticks = gs.getTicks();
|
m_last_ticks = gs.getTicks();
|
||||||
uint64_t ticks = gs.getTicks();
|
uint64_t ticks = gs.getTicks();
|
||||||
int elapsed = ticks - m_last_ticks;
|
int elapsed = ticks - m_last_ticks;
|
||||||
|
m_offset += XLATE_RATE * elapsed;
|
||||||
|
while (m_offset - m_last_ring_offset > RING_LAYER_DIST)
|
||||||
|
{
|
||||||
|
m_last_ring_offset += RING_LAYER_DIST;
|
||||||
|
addRing(m_last_ring_offset);
|
||||||
|
}
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
@ -43,7 +49,7 @@ bool Tunnel::expose (GnomeScreensaver & gs)
|
|||||||
it++)
|
it++)
|
||||||
{
|
{
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(0, m_offset + it->offset, 0);
|
glTranslatef(0, m_offset - it->offset, 0);
|
||||||
glRotatef(it->trot, 0, 1, 0);
|
glRotatef(it->trot, 0, 1, 0);
|
||||||
glTranslatef(RING_RADIUS, 0, 0);
|
glTranslatef(RING_RADIUS, 0, 0);
|
||||||
glRotatef(-90.0, 0, 0, 1);
|
glRotatef(-90.0, 0, 0, 1);
|
||||||
@ -58,14 +64,14 @@ bool Tunnel::expose (GnomeScreensaver & gs)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tunnel::addRing()
|
void Tunnel::addRing(double offset)
|
||||||
{
|
{
|
||||||
for (int j = 0; j < N_LOGOS_PER_RING; j++)
|
for (int j = 0; j < N_LOGOS_PER_RING; j++)
|
||||||
{
|
{
|
||||||
float zrot = ((j + m_ring_rot_idx) & 0x3) * 90.0;
|
float zrot = ((j + m_ring_rot_idx) & 0x3) * 90.0;
|
||||||
float trot = j * 360.0 / N_LOGOS_PER_RING;
|
float trot = j * 360.0 / N_LOGOS_PER_RING;
|
||||||
LBStruct lbs = {
|
LBStruct lbs = {
|
||||||
m_offset,
|
offset,
|
||||||
zrot,
|
zrot,
|
||||||
trot,
|
trot,
|
||||||
{0, 0, 1}
|
{0, 0, 1}
|
||||||
@ -90,8 +96,7 @@ bool Tunnel::configure (GnomeScreensaver & gs)
|
|||||||
|
|
||||||
for (int i = 0; i <= N_INITIAL_LAYERS; i++)
|
for (int i = 0; i <= N_INITIAL_LAYERS; i++)
|
||||||
{
|
{
|
||||||
m_offset = (N_INITIAL_LAYERS - i) * RING_LAYER_DIST,
|
addRing((i - N_INITIAL_LAYERS) * RING_LAYER_DIST);
|
||||||
addRing();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_offset = 0.0;
|
m_offset = 0.0;
|
||||||
|
@ -23,7 +23,7 @@ class Tunnel : public Mode
|
|||||||
float spin_axis[3];
|
float spin_axis[3];
|
||||||
} LBStruct;
|
} LBStruct;
|
||||||
protected:
|
protected:
|
||||||
void addRing();
|
void addRing(double offset);
|
||||||
LogoBox m_logobox;
|
LogoBox m_logobox;
|
||||||
uint64_t m_last_ticks;
|
uint64_t m_last_ticks;
|
||||||
std::list<LBStruct> m_logos;
|
std::list<LBStruct> m_logos;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user