aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorweiss <weiss@84d2e878-0bd5-11dd-ad15-13eda11d74c5>2008-07-19 14:16:06 +0000
committerweiss <weiss@84d2e878-0bd5-11dd-ad15-13eda11d74c5>2008-07-19 14:16:06 +0000
commit23705de21cacd60e0dabe53a73454bcd28f8afad (patch)
treead6d3f4bec83ecefc06ec6577b4670899905fcb8
parentfb8b31d3026c9f96acdde8fef9e81d41b9a62215 (diff)
Put the 'recharge ripple' in the right place
git-svn-id: svn://cook.msm.cam.ac.uk:745/thrust3d/thrust3d@143 84d2e878-0bd5-11dd-ad15-13eda11d74c5
-rw-r--r--data/shaders/swirlytron.frag10
-rw-r--r--src/game.c2
-rw-r--r--src/physics.c8
-rw-r--r--src/render.c3
-rw-r--r--src/types.h5
5 files changed, 18 insertions, 10 deletions
diff --git a/data/shaders/swirlytron.frag b/data/shaders/swirlytron.frag
index d2d6ca7..81c80c3 100644
--- a/data/shaders/swirlytron.frag
+++ b/data/shaders/swirlytron.frag
@@ -12,7 +12,7 @@
varying vec2 coords;
varying vec2 incoords;
uniform float time;
-uniform bool landed;
+uniform bool rechargeripple;
void main() {
@@ -26,12 +26,12 @@ void main() {
colour.g = 0.0;
colour.b = 1.0 * cos(2*f*3.141*r - (time/250.0) );
- if ( landed ) {
+ if ( rechargeripple ) {
r = pow(abs(incoords.x), 2.0) + pow(abs(incoords.y), 2.0);
f = 1.0;
- colour.r += 1.0 * cos(2*f*3.141*r + (time/250.0) );
- colour.g += 1.0 * cos(2*f*3.141*r + (time/250.0) );
- colour.b += 0.0;
+ colour.r += 0.8 * cos(2*f*3.141*r + (time/250.0) );
+ colour.g += 0.3 * cos(2*f*3.141*r + (time/250.0) );
+ colour.b += 0.1;
}
gl_FragColor = vec4(colour.r, colour.g, colour.b, 1.0);
diff --git a/src/game.c b/src/game.c
index 72e400d..c51dd7f 100644
--- a/src/game.c
+++ b/src/game.c
@@ -250,6 +250,8 @@ Game *game_new(int width, int height, GameOptions gameopts) {
g->fps = 0;
g->fuel = 1.0;
g->radiation = 0.1;
+ g->platform_rel_x = 0.0;
+ g->platform_rel_y = 0.0;
/* Renderer setup */
g->render = render_setup(width, height, gameopts.disable_vbos, gameopts.disable_fbos, gameopts.disable_shaders);
diff --git a/src/physics.c b/src/physics.c
index 5b9c641..ad2dae6 100644
--- a/src/physics.c
+++ b/src/physics.c
@@ -167,7 +167,7 @@ static int physics_check_collide_all_faces(ModelInstance *obj, ModelInstance *ot
coll->cx = obj->x + ttc*obj->vx;
coll->cy = obj->y + ttc*obj->vy;
coll->cz = obj->z + ttc*obj->vz;
- coll->name = other->model->name;
+ coll->obj = other;
found = 1;
}
@@ -290,7 +290,7 @@ static void physics_process(ModelInstance *obj, Uint32 dt, Game *game) {
coll.ttc = +HUGE_VAL;
coll.nx = 0.0; coll.ny = 0.0; coll.nz = 0.0;
coll.cx = 0.0; coll.cy = 0.0; coll.cz = 0.0;
- coll.name = NULL;
+ coll.obj = NULL;
collided = physics_find_earliest_collision(obj, game, dt-sttc, &coll);
if ( collided ) {
@@ -312,8 +312,10 @@ static void physics_process(ModelInstance *obj, Uint32 dt, Game *game) {
obj->vz = 0.0;
obj->yawspeed = 0.0;
- if ( strcmp(coll.name, "platform") == 0 ) {
+ if ( strcmp(coll.obj->model->name, "platform") == 0 ) {
obj->recharging = 1;
+ game->platform_rel_x = coll.obj->x - obj->x;
+ game->platform_rel_y = coll.obj->y - obj->y;
}
} else {
diff --git a/src/render.c b/src/render.c
index 07a50e6..044dd42 100644
--- a/src/render.c
+++ b/src/render.c
@@ -646,7 +646,8 @@ void render_draw(Game *game, Uint32 t) {
if ( r->shaders ) glUseProgram(r->swirly_program);
if ( r->shaders ) glUniform1f(glGetUniformLocation(game->render->swirly_program, "time"), t);
if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->swirly_program, "landed"), game->lander->recharging);
- if ( r->shaders ) glUniform2f(glGetUniformLocation(game->render->swirly_program, "lander"), 0.5, 0.0);
+ if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->swirly_program, "rechargeripple"), game->lander->recharging);
+ if ( r->shaders ) glUniform2f(glGetUniformLocation(game->render->swirly_program, "lander"), game->platform_rel_x, game->platform_rel_y);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
diff --git a/src/types.h b/src/types.h
index d57af18..928493e 100644
--- a/src/types.h
+++ b/src/types.h
@@ -253,6 +253,9 @@ typedef struct {
GLfloat radiation;
GLfloat fuel;
+
+ GLfloat platform_rel_x;
+ GLfloat platform_rel_y;
} Game;
@@ -268,7 +271,7 @@ typedef struct {
double ttc;
- char *name; /* Name of object being collided against */
+ ModelInstance *obj; /* The object being collided against */
} CollisionSpec;