diff options
author | weiss <weiss@84d2e878-0bd5-11dd-ad15-13eda11d74c5> | 2008-07-19 14:16:06 +0000 |
---|---|---|
committer | weiss <weiss@84d2e878-0bd5-11dd-ad15-13eda11d74c5> | 2008-07-19 14:16:06 +0000 |
commit | 23705de21cacd60e0dabe53a73454bcd28f8afad (patch) | |
tree | ad6d3f4bec83ecefc06ec6577b4670899905fcb8 | |
parent | fb8b31d3026c9f96acdde8fef9e81d41b9a62215 (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.frag | 10 | ||||
-rw-r--r-- | src/game.c | 2 | ||||
-rw-r--r-- | src/physics.c | 8 | ||||
-rw-r--r-- | src/render.c | 3 | ||||
-rw-r--r-- | src/types.h | 5 |
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); @@ -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; |