diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 21 |
1 files changed, 15 insertions, 6 deletions
@@ -71,6 +71,11 @@ static void main_help(const char *n) { main_version(); } +int main_event_filter(const SDL_Event *event) { + if ( event->type == SDL_MOUSEMOTION ) return 0; + return 1; +} + int main(int argc, char *argv[]) { SDL_Event event; @@ -188,8 +193,9 @@ int main(int argc, char *argv[]) { } SDL_WM_SetCaption("Thrust3D", "Thrust3D"); - SDL_ShowCursor(SDL_ENABLE); - SDL_WM_GrabInput(SDL_GRAB_ON); + SDL_ShowCursor(SDL_DISABLE); + //SDL_WM_GrabInput(SDL_GRAB_ON); + SDL_SetEventFilter(main_event_filter); /* World setup */ Game *game; @@ -199,6 +205,8 @@ int main(int argc, char *argv[]) { finished = 0; while ( !finished ) { + int mx, my; + /* Timer advances only when game is not paused */ if ( !game->paused ) { game->tlast = t; @@ -230,10 +238,6 @@ int main(int argc, char *argv[]) { if ( event.key.keysym.sym == SDLK_DOWN ) game->reverse = 0; if ( event.key.keysym.sym == SDLK_p ) game->pause_rel = 1; break; - case SDL_MOUSEMOTION : - printf("Mouse! %i\n", event.motion.y); - //game->view_angle -= event.motion.yrel*0.001; - break; case SDL_VIDEOEXPOSE : /* Don't bother redrawing if not paused - not long to wait! */ if ( game->paused ) render_draw(game, t); @@ -242,6 +246,11 @@ int main(int argc, char *argv[]) { finished = 1; break; } + + SDL_GetMouseState(&mx, &my); + game->view_yaw = mx*0.005; + game->view_angle = my*0.005; + if ( !game->paused ) { physics_step(game, t); render_draw(game, t); |