diff options
author | taw27 <taw27@84d2e878-0bd5-11dd-ad15-13eda11d74c5> | 2008-07-26 22:10:20 +0000 |
---|---|---|
committer | taw27 <taw27@84d2e878-0bd5-11dd-ad15-13eda11d74c5> | 2008-07-26 22:10:20 +0000 |
commit | abe68923dd00e7585914352fa5fe0cb32bda5697 (patch) | |
tree | 34bd6b1b9a54316ff70160b7cfcd8a25c3d4f227 /src/main.c | |
parent | 02e398005e6268b32cbd18e7102f9632fc08b61f (diff) |
Camera position stuff
git-svn-id: svn://cook.msm.cam.ac.uk:745/thrust3d/thrust3d@174 84d2e878-0bd5-11dd-ad15-13eda11d74c5
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -87,6 +87,7 @@ int main(int argc, char *argv[]) { ScreenResolution res; Uint32 t = 0; GameOptions gameopts; + Uint16 cx, cy; gameopts.disable_vbos = 0; gameopts.disable_fbos = 0; @@ -196,6 +197,8 @@ int main(int argc, char *argv[]) { SDL_ShowCursor(SDL_DISABLE); //SDL_WM_GrabInput(SDL_GRAB_ON); SDL_SetEventFilter(main_event_filter); + cx = width/2; cy = height/2; + SDL_WarpMouse(cx, cy); /* World setup */ Game *game; @@ -228,6 +231,7 @@ int main(int argc, char *argv[]) { if ( event.key.keysym.sym == SDLK_p ) game_pause(game); if ( event.key.keysym.sym == SDLK_q ) finished = 1; if ( event.key.keysym.sym == SDLK_ESCAPE ) finished = 1; + if ( event.key.keysym.sym == SDLK_r ) SDL_WarpMouse(cx, cy); break; case SDL_KEYUP : /* Process key releases even when paused */ @@ -248,8 +252,10 @@ int main(int argc, char *argv[]) { } SDL_GetMouseState(&mx, &my); - game->view_yaw = mx*0.005; - game->view_angle = my*0.005; + game->view_yaw = -(mx-cx)*0.005; + game->view_angle = deg2rad(-20.0) + (my-cy)*0.005; + if ( game->view_angle > deg2rad(89.0) ) game->view_angle = deg2rad(89.0); + if ( game->view_angle < deg2rad(-89.0) ) game->view_angle = deg2rad(-89.0); if ( !game->paused ) { physics_step(game, t); |