added LightBounce mode copied from PlainSpin

git-svn-id: svn://anubis/dwscr/trunk@90 5bef9df8-b654-44bb-925b-0ff18baa8f8c
This commit is contained in:
josh 2008-11-13 01:34:00 +00:00
parent bef677581f
commit 49d091deeb
4 changed files with 73 additions and 3 deletions

44
ss/LightBounce.cc Normal file
View File

@ -0,0 +1,44 @@
/* Author: Josh Holtrop
* DornerWorks screensaver
*/
#include <GL/gl.h>
#include <GL/glu.h>
#include "LightBounce.h"
#include <iostream>
using namespace std;
/* construct screensaver mode and do some basic OpenGL setup */
LightBounce::LightBounce(SSMain * _SSMain) : SSMode(_SSMain)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0,
(double)m_SSMain->getWidth()
/ (double)m_SSMain->getHeight()
/ (double)m_SSMain->getNumMonitors(),
0.01,
1000.01);
glMatrixMode(GL_MODELVIEW);
}
/* called every time this screensaver mode should redraw the screen */
void LightBounce::update()
{
SSMode::update();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
int numMonitors = m_SSMain->getNumMonitors();
int width = m_SSMain->getWidth();
int height = m_SSMain->getHeight();
for (int i = 0; i < numMonitors; i++)
{
glViewport(i*width/numMonitors, 0, width/numMonitors, height);
glLoadIdentity();
gluLookAt(0, 0, 12, 0, 0, 0, 0, 1, 0);
glRotatef(m_elapsed/33.0f, 0, 1, 0);
m_logoBox.draw();
}
SDL_GL_SwapBuffers();
}

22
ss/LightBounce.h Normal file
View File

@ -0,0 +1,22 @@
/* Author: Josh Holtrop
* DornerWorks screensaver
*/
#ifndef LIGHTBOUNCE_H
#define LIGHTBOUNCE_H
#include "SSMain.h"
#include "SSMode.h"
#include "LogoBox.h"
class LightBounce : public SSMode
{
public:
LightBounce(SSMain * _SSMain);
void update();
protected:
LogoBox m_logoBox;
};
#endif

View File

@ -3,6 +3,7 @@ OBJS := SSMain.o
OBJS += SSMode.o
OBJS += LogoBox.o
OBJS += PlainSpin.o
OBJS += LightBounce.o
ifndef WITHOUT_ODE
OBJS += TumblingLogos.o
OBJS += Towers.o

View File

@ -14,6 +14,7 @@
#include <SDL/SDL.h>
#include "SSMain.h"
#include "PlainSpin.h"
#include "LightBounce.h"
#ifndef WITHOUT_ODE
#include "TumblingLogos.h"
#include "Towers.h"
@ -124,9 +125,9 @@ SSMode * SSMain::startMode()
{
static int mode = 0;
#ifndef WITHOUT_ODE
const int numModes = 3;
const int numModes = 4;
#else
const int numModes = 1;
const int numModes = 2;
#endif
mode++;
@ -137,8 +138,10 @@ SSMode * SSMain::startMode()
{
case 0:
return new PlainSpin(this);
#ifndef WITHOUT_ODE
case 1:
return new LightBounce(this);
#ifndef WITHOUT_ODE
case 2:
return new Towers(this);
default:
return new TumblingLogos(this);