minor gitignore additions
[summerhack] / src / events.cpp
1 #include "3dengfx/3dengfx.hpp"
2
3 using namespace engfx_state;
4
5 static float zoom_factor = 1.0;
6
7 void key_handler(int key) {
8         TargetCamera *cam = dynamic_cast<TargetCamera*>(const_cast<Camera*>(view_mat_camera));
9         
10         switch(key) {
11         case 'a':
12                 cam->zoom(0.8);
13                 zoom_factor *= 0.8;
14                 break;
15
16         case 'z':
17                 cam->zoom(1.2);
18                 zoom_factor *= 1.2;
19                 break;
20
21         case '`':
22                 screen_capture();
23                 break;
24
25         case 27:
26                 exit(0);
27
28         default:
29                 break;
30         }
31 }
32
33 static int prev_x = -1;
34 static int prev_y = -1;
35
36 void motion_handler(int x, int y) {
37         if(prev_x != -1) {
38                 TargetCamera *cam = dynamic_cast<TargetCamera*>(const_cast<Camera*>(view_mat_camera));
39                 float dx = (float)(x - prev_x) * 0.01;
40                 float dy = (float)(y - prev_y) * 1.0;
41                 
42                 cam->rotate(Vector3(0, -dx, 0));
43                 cam->translate(Vector3(0, -dy * zoom_factor, 0));
44                 
45                 prev_x = x;
46                 prev_y = y;
47         }
48 }
49
50 void bn_handler(int bn, int pressed, int x, int y) {
51         TargetCamera *cam = dynamic_cast<TargetCamera*>(const_cast<Camera*>(view_mat_camera));
52
53         switch(bn) {
54         case fxwt::BN_RIGHT:
55                 if(pressed) {
56                         prev_x = x;
57                         prev_y = y;
58                 } else {
59                         prev_x = prev_y = -1;
60                 }
61                 break;
62
63         case fxwt::BN_WHEELUP:
64                 cam->zoom(0.9);
65                 zoom_factor *= 0.9;
66                 break;
67
68         case fxwt::BN_WHEELDOWN:
69                 cam->zoom(1.1);
70                 zoom_factor *= 1.1;
71                 break;
72
73         default:
74                 break;
75         }
76 }