From 7f4e8d55232c076ec8e433e835928aeef55c354c Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Tue, 9 Feb 2010 19:13:26 -0500 Subject: Calculate Paddle velocity in (x,y) at time of collision. Signed-off-by: Matt Turner --- paddle.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'paddle.c') diff --git a/paddle.c b/paddle.c index 4c4c9f0..78bc189 100644 --- a/paddle.c +++ b/paddle.c @@ -67,6 +67,8 @@ GLPong_PaddleInit(Paddle_t * paddle, GLfloat z, GLuint texture) { paddle->x = paddle->w / 2.0f; paddle->y = paddle->h / 2.0f; paddle->z = z; + paddle->prev_x = paddle->x; + paddle->prev_y = paddle->y; paddle->r = 1.0f; paddle->g = 1.0f; paddle->b = 1.0f; @@ -76,10 +78,10 @@ GLPong_PaddleInit(Paddle_t * paddle, GLfloat z, GLuint texture) { void GLPong_PaddleMove(Paddle_t * paddle, GLfloat x, GLfloat y) { - GLfloat old_x = paddle->x; - GLfloat old_y = paddle->y; GLfloat mouse_x; GLfloat mouse_y; + paddle->prev_x = paddle->x; + paddle->prev_y = paddle->y; /* clamp paddle to border */ if (x <= -1.5f + (paddle->w / 2.0f)) { @@ -99,12 +101,12 @@ GLPong_PaddleMove(Paddle_t * paddle, GLfloat x, GLfloat y) { #ifdef DEBUG printf("(mouse_x, mouse_y) = (%.3f, %.3f)\n", mouse_x, mouse_y); - printf("x diff is %f\n", fabs(mouse_x - old_x)); - printf("y diff is %f\n", fabs(mouse_y - old_y)); + printf("x diff is %f\n", fabs(mouse_x - paddle->prev_x)); + printf("y diff is %f\n", fabs(mouse_y - paddle->prev_y)); #endif - if (fabs(mouse_x - old_x) > 0.33f / 2.0f) { - if (mouse_x > old_x) { + if (fabs(mouse_x - paddle->prev_x) > 0.33f / 2.0f) { + if (mouse_x > paddle->prev_x) { paddle->x += 0.33f / 2.0f; } else { paddle->x -= 0.33f / 2.0f; @@ -113,8 +115,8 @@ GLPong_PaddleMove(Paddle_t * paddle, GLfloat x, GLfloat y) { paddle->x = mouse_x; } - if (fabs(mouse_y - old_y) > 0.25f / 2.0f) { - if (mouse_y > old_y) { + if (fabs(mouse_y - paddle->prev_y) > 0.25f / 2.0f) { + if (mouse_y > paddle->prev_y) { paddle->y += 0.25f / 2.0f; } else { paddle->y -= 0.25f / 2.0f; -- cgit v1.2.3