Changeset 5379
- Timestamp:
- May 29, 2008, 11:10:25 AM (17 years ago)
- Location:
- anuga_work/development/anugavis/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_work/development/anugavis/src/Makefile.am
r5378 r5379 17 17 netcdf_util.c \ 18 18 netcdf_util.h \ 19 vector. c\19 vector.h \ 20 20 xfunctions.c \ 21 21 xfunctions.h … … 26 26 anugavis_simple_SOURCES = anugavis_simple.c 27 27 anugavis_simple_CFLAGS = @SDL_CFLAGS@ @GLU_CFLAGS@ 28 anugavis_simple_LDADD = libanugavis.a -lm@SDL_LIBS@ @GLU_LIBS@28 anugavis_simple_LDADD = libanugavis.a @SDL_LIBS@ @GLU_LIBS@ -
anuga_work/development/anugavis/src/camera.c
r5339 r5379 80 80 vadd(anugavis.focus, dir, anugavis.focus); 81 81 } 82 83 void camera_zoom(float dist){ 84 vector releye; 85 float len; 86 vsub(anugavis.focus, anugavis.eye, releye); 87 if((len = vlen(releye)) < dist) return; 88 vscale(releye, dist/len, releye); 89 vadd(anugavis.eye, releye, anugavis.eye); 90 } -
anuga_work/development/anugavis/src/camera.h
r5339 r5379 2 2 #define CAMERA_H 3 3 4 /* FIXME camera steps will need to depend on extents. */ 4 5 #define CAMERA_YAW_STEP 0.1 5 6 #define CAMERA_PITCH_STEP 0.1 6 7 #define CAMERA_TRACK_STEP 2.0 7 8 #define CAMERA_STRAFE_STEP 2.0 9 #define CAMERA_ZOOM_STEP 2.0 8 10 9 11 extern void camera_pitch(float theta); … … 11 13 extern void camera_track(float dist); 12 14 extern void camera_strafe(float dist); 15 extern void camera_zoom(float dist); 13 16 14 17 #endif -
anuga_work/development/anugavis/src/events.c
r5339 r5379 22 22 #define MAX(a, b) ((a) > (b) ? (a) : (b)) 23 23 24 /* Called for each SDL_KEYDOWN or SDL_KEYUP event. Returns 1 if we're not stopping, else 0. */ 25 static int handleInput(const SDL_Event *event){ 26 int more = 1; 27 if(event->type == SDL_KEYDOWN) 28 if(event->key.keysym.mod & KMOD_ALT) 29 switch(event->key.keysym.sym){ 30 case SDLK_UP: anugavis.keys[KEY_FORWARD] = 1; break; 31 case SDLK_DOWN: anugavis.keys[KEY_BACKWARD] = 1; break; 32 case SDLK_LEFT: anugavis.keys[KEY_STRAFE_LEFT] = 1; break; 33 case SDLK_RIGHT: anugavis.keys[KEY_STRAFE_RIGHT] = 1; break; 34 default: break; 35 } 36 else if(event->key.keysym.mod & KMOD_SHIFT) switch(event->key.keysym.sym){ 37 case SDLK_UP: anugavis.keys[KEY_ZOOM_IN] = 1; break; 38 case SDLK_DOWN: anugavis.keys[KEY_ZOOM_OUT] = 1; break; 39 default: break; 40 } 41 else switch(event->key.keysym.sym){ 42 case SDLK_z: 43 anugavis.current_frame = MAX(anugavis.current_frame - 10, 0); 44 break; 45 case SDLK_x: 46 if(anugavis.current_frame > 0) anugavis.current_frame--; 47 break; 48 case SDLK_c: 49 case SDLK_SPACE: anugavis.paused = !anugavis.paused; break; 50 case SDLK_v: 51 if(anugavis.current_frame < 52 (signed int)anugavis.number_of_timesteps - 1) 53 anugavis.current_frame++; 54 break; 55 case SDLK_b: 56 anugavis.current_frame = MIN(anugavis.current_frame + 10, 57 (signed int)anugavis.number_of_timesteps 58 - 1); 59 break; 60 case SDLK_ESCAPE: more = 0; break; 61 case SDLK_UP: anugavis.keys[KEY_PITCH_UP] = 1; break; 62 case SDLK_DOWN: anugavis.keys[KEY_PITCH_DOWN] = 1; break; 63 case SDLK_LEFT: anugavis.keys[KEY_ROTATE_LEFT] = 1; break; 64 case SDLK_RIGHT: anugavis.keys[KEY_ROTATE_RIGHT] = 1; break; 65 default: break; 66 } 67 else if(event->type == SDL_KEYUP) switch(event->key.keysym.sym){ 68 case SDLK_UP: 69 anugavis.keys[KEY_FORWARD] = 0; 70 anugavis.keys[KEY_PITCH_UP] = 0; 71 anugavis.keys[KEY_ZOOM_IN] = 0; 72 break; 73 case SDLK_DOWN: 74 anugavis.keys[KEY_BACKWARD] = 0; 75 anugavis.keys[KEY_PITCH_DOWN] = 0; 76 anugavis.keys[KEY_ZOOM_OUT] = 0; 77 break; 78 case SDLK_LEFT: 79 anugavis.keys[KEY_STRAFE_LEFT] = 0; 80 anugavis.keys[KEY_ROTATE_LEFT] = 0; 81 break; 82 case SDLK_RIGHT: 83 anugavis.keys[KEY_STRAFE_RIGHT] = 0; 84 anugavis.keys[KEY_ROTATE_RIGHT] = 0; 85 break; 86 default: break; 87 } 88 return more; 89 } 90 24 91 int AnugaVis_Step(void){ 25 92 static Uint32 ticks = 0; … … 32 99 33 100 /* Animation. */ 34 /* FIXME needs to respect pause. */35 101 if(ticks == 0) lastframe = ticks = SDL_GetTicks(); 36 102 else ticks = SDL_GetTicks(); … … 54 120 if(anugavis.keys[KEY_STRAFE_LEFT]) camera_strafe(CAMERA_STRAFE_STEP); 55 121 if(anugavis.keys[KEY_STRAFE_RIGHT]) camera_strafe(-CAMERA_STRAFE_STEP); 122 if(anugavis.keys[KEY_ZOOM_IN]) camera_zoom(CAMERA_ZOOM_STEP); 123 if(anugavis.keys[KEY_ZOOM_OUT]) camera_zoom(-CAMERA_ZOOM_STEP); 56 124 gluLookAt(anugavis.eye[0], anugavis.eye[1], anugavis.eye[2], 57 125 anugavis.focus[0], anugavis.focus[1], anugavis.focus[2], … … 63 131 AnugaVis_DrawHeightQuantity(height); 64 132 SDL_GL_SwapBuffers(); 65 /* TODO: Add support for moving the camera. */ 133 66 134 while(SDL_PollEvent(&event)) 67 135 if(event.type == SDL_QUIT) more = 0; 68 else if(event.type == SDL_KEYDOWN) 69 if(event.key.keysym.mod & (KMOD_LALT | KMOD_RALT)) 70 switch(event.key.keysym.sym){ 71 case SDLK_UP: anugavis.keys[KEY_FORWARD] = 1; break; 72 case SDLK_DOWN: anugavis.keys[KEY_BACKWARD] = 1; break; 73 case SDLK_LEFT: anugavis.keys[KEY_STRAFE_LEFT] = 1; break; 74 case SDLK_RIGHT: anugavis.keys[KEY_STRAFE_RIGHT] = 1; break; 75 default: break; 76 } 77 else switch(event.key.keysym.sym){ 78 case SDLK_z: 79 anugavis.current_frame = MAX(anugavis.current_frame - 10, 0); 80 break; 81 case SDLK_x: 82 if(anugavis.current_frame > 0) anugavis.current_frame--; 83 break; 84 case SDLK_c: 85 case SDLK_SPACE: anugavis.paused = !anugavis.paused; break; 86 case SDLK_v: 87 if(anugavis.current_frame < 88 (signed int)anugavis.number_of_timesteps - 1) 89 anugavis.current_frame++; 90 break; 91 case SDLK_b: 92 anugavis.current_frame = MIN(anugavis.current_frame + 10, 93 (signed int)anugavis.number_of_timesteps 94 - 1); 95 break; 96 case SDLK_ESCAPE: more = 0; break; 97 case SDLK_UP: anugavis.keys[KEY_PITCH_UP] = 1; break; 98 case SDLK_DOWN: anugavis.keys[KEY_PITCH_DOWN] = 1; break; 99 case SDLK_LEFT: anugavis.keys[KEY_ROTATE_LEFT] = 1; break; 100 case SDLK_RIGHT: anugavis.keys[KEY_ROTATE_RIGHT] = 1; break; 101 default: break; 102 } 103 else switch(event.key.keysym.sym){ 104 case SDLK_UP: 105 anugavis.keys[KEY_FORWARD] = 0; 106 anugavis.keys[KEY_PITCH_UP] = 0; 107 break; 108 case SDLK_DOWN: 109 anugavis.keys[KEY_BACKWARD] = 0; 110 anugavis.keys[KEY_PITCH_DOWN] = 0; 111 break; 112 case SDLK_LEFT: 113 anugavis.keys[KEY_STRAFE_LEFT] = 0; 114 anugavis.keys[KEY_ROTATE_LEFT] = 0; 115 break; 116 case SDLK_RIGHT: 117 anugavis.keys[KEY_STRAFE_RIGHT] = 0; 118 anugavis.keys[KEY_ROTATE_RIGHT] = 0; 119 break; 120 default: break; 121 } 136 else if((event.type == SDL_KEYDOWN) || (event.type == SDL_KEYUP)) more = handleInput(&event); 122 137 return more; 123 138 } -
anuga_work/development/anugavis/src/events.h
r5339 r5379 12 12 KEY_PITCH_UP, 13 13 KEY_PITCH_DOWN, 14 KEY_ZOOM_IN, 15 KEY_ZOOM_OUT, 14 16 KEY_MAX} KEYS; 15 17
Note: See TracChangeset
for help on using the changeset viewer.