Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1 | pmbaty | 1 | #if 0 // Pierre-Marie Baty -- looks like disabled code |
| 2 | |||
| 3 | #include "cameras/debug_camera.h" |
||
| 4 | #include <SDL.h> |
||
| 5 | |||
| 6 | mat4 view, projection; |
||
| 7 | vec3 cam_pos = { 0, 0, 0 }; |
||
| 8 | vec3 cam_front = { 0, 0, -1 }; |
||
| 9 | vec3 cam_up = { 0, 1, 0 }; |
||
| 10 | float cam_speed = 0.5f; |
||
| 11 | |||
| 12 | float vc[4][4] = { |
||
| 13 | { 0.45397636, 0.0, 0.89101368, 0 }, { 0.1117821, 0.99209929, -0.056953594, 0 }, { -0.88397402, 0.12545498, 0.45038962, 0 }, { -69.239441, 20.735441, -52.417336, 1 } |
||
| 14 | }; |
||
| 15 | |||
| 16 | float lastX = 400, lastY = 300; |
||
| 17 | int firstMouse = 1; |
||
| 18 | float yaw = 0, pitch = 0; |
||
| 19 | |||
| 20 | int gDebugCamera_active = 0; |
||
| 21 | |||
| 22 | void DebugCamera_Update(void) { |
||
| 23 | const Uint8* state = SDL_GetKeyboardState(NULL); |
||
| 24 | if (state[SDL_SCANCODE_UP]) { |
||
| 25 | vec3 s; |
||
| 26 | glm_vec3_scale(cam_front, cam_speed, s); |
||
| 27 | glm_vec3_add(cam_pos, s, cam_pos); |
||
| 28 | } |
||
| 29 | if (state[SDL_SCANCODE_DOWN]) { |
||
| 30 | vec3 s; |
||
| 31 | glm_vec3_scale(cam_front, -cam_speed, s); |
||
| 32 | glm_vec3_add(cam_pos, s, cam_pos); |
||
| 33 | } |
||
| 34 | if (state[SDL_SCANCODE_LEFT]) { |
||
| 35 | vec3 cr; |
||
| 36 | glm_cross(cam_front, cam_up, cr); |
||
| 37 | glm_normalize(cr); |
||
| 38 | glm_vec3_scale(cr, cam_speed, cr); |
||
| 39 | glm_vec3_add(cam_pos, cr, cam_pos); |
||
| 40 | } |
||
| 41 | if (state[SDL_SCANCODE_RIGHT]) { |
||
| 42 | vec3 cr; |
||
| 43 | glm_cross(cam_front, cam_up, cr); |
||
| 44 | glm_normalize(cr); |
||
| 45 | glm_vec3_scale(cr, -cam_speed, cr); |
||
| 46 | glm_vec3_add(cam_pos, cr, cam_pos); |
||
| 47 | } |
||
| 48 | if (state[SDL_SCANCODE_F12]) { |
||
| 49 | gDebugCamera_active = !gDebugCamera_active; |
||
| 50 | // if (!gDebugCamera_active) { |
||
| 51 | // printf("DEBUGCAMERAACTIVE\n"); |
||
| 52 | // gDebugCamera_active = 1; |
||
| 53 | // } |
||
| 54 | } |
||
| 55 | |||
| 56 | int xpos, ypos; |
||
| 57 | SDL_GetMouseState(&xpos, &ypos); |
||
| 58 | |||
| 59 | if (firstMouse) { |
||
| 60 | lastX = xpos; |
||
| 61 | lastY = ypos; |
||
| 62 | firstMouse = false; |
||
| 63 | } |
||
| 64 | |||
| 65 | float xoffset = xpos - lastX; |
||
| 66 | float yoffset = lastY - ypos; |
||
| 67 | lastX = xpos; |
||
| 68 | lastY = ypos; |
||
| 69 | |||
| 70 | float sensitivity = 0.7f; |
||
| 71 | xoffset *= sensitivity; |
||
| 72 | yoffset *= sensitivity; |
||
| 73 | |||
| 74 | yaw += xoffset; |
||
| 75 | pitch += yoffset; |
||
| 76 | |||
| 77 | if (pitch > 89.0f) |
||
| 78 | pitch = 89.0f; |
||
| 79 | if (pitch < -89.0f) |
||
| 80 | pitch = -89.0f; |
||
| 81 | |||
| 82 | vec3 direction; |
||
| 83 | direction[0] = cos(glm_rad(yaw)) * cos(glm_rad(pitch)); |
||
| 84 | direction[1] = sin(glm_rad(pitch)); |
||
| 85 | direction[2] = sin(glm_rad(yaw)) * cos(glm_rad(pitch)); |
||
| 86 | glm_normalize_to(direction, cam_front); |
||
| 87 | } |
||
| 88 | |||
| 89 | extern float gCamera_hither; |
||
| 90 | extern float gCamera_yon; |
||
| 91 | |||
| 92 | float* DebugCamera_Projection(void) { |
||
| 93 | glm_perspective(glm_rad(55.55), 320.0f / 200.0f /*4.0f / 3.0f*/, gCamera_hither, gCamera_yon, projection); |
||
| 94 | return (float*)&projection; |
||
| 95 | } |
||
| 96 | |||
| 97 | float* DebugCamera_View(void) { |
||
| 98 | vec3 look; |
||
| 99 | glm_vec3_add(cam_pos, cam_front, look); |
||
| 100 | glm_lookat(cam_pos, look, cam_up, view); |
||
| 101 | return (float*)&view; |
||
| 102 | } |
||
| 103 | |||
| 104 | void DebugCamera_SetPosition(float x, float y, float z) { |
||
| 105 | if (cam_pos[0] == 0) { |
||
| 106 | cam_pos[0] = x; |
||
| 107 | cam_pos[1] = y; |
||
| 108 | cam_pos[2] = z; |
||
| 109 | } |
||
| 110 | } |
||
| 111 | |||
| 112 | #endif // 0 |