2121#include " vertex_buffer.h"
2222#include " index_buffer.h"
2323#include " shader.h"
24- #include " camera .h"
24+ #include " floating_camera .h"
2525
2626void openGLDebugCallback (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void * userParam) {
2727 std::cout << " [OpenGL Error] " << message << std::endl;
@@ -107,7 +107,7 @@ int main(int argc, char** argv) {
107107 glm::mat4 model = glm::mat4 (1 .0f );
108108 model = glm::scale (model, glm::vec3 (1 .2f ));
109109
110- Camera camera (90 .0f , 800 .0f , 600 .0f );
110+ FloatingCamera camera (90 .0f , 800 .0f , 600 .0f );
111111 camera.translate (glm::vec3 (0 .0f , 0 .0f , 5 .0f ));
112112 camera.update ();
113113
@@ -122,9 +122,13 @@ int main(int argc, char** argv) {
122122 bool buttonS = false ;
123123 bool buttonA = false ;
124124 bool buttonD = false ;
125+ bool buttonSpace = false ;
126+ bool buttonShift = false ;
125127
128+ float cameraSpeed = 6 .0f ;
126129 float time = 0 .0f ;
127130 bool close = false ;
131+ SDL_SetRelativeMouseMode (SDL_TRUE);
128132 while (!close) {
129133 SDL_Event event;
130134 while (SDL_PollEvent (&event)) {
@@ -144,6 +148,12 @@ int main(int argc, char** argv) {
144148 case SDLK_d:
145149 buttonD = true ;
146150 break ;
151+ case SDLK_SPACE:
152+ buttonSpace = true ;
153+ break ;
154+ case SDLK_LSHIFT:
155+ buttonShift = true ;
156+ break ;
147157 }
148158 } else if (event.type == SDL_KEYUP) {
149159 switch (event.key .keysym .sym ) {
@@ -159,7 +169,15 @@ int main(int argc, char** argv) {
159169 case SDLK_d:
160170 buttonD = false ;
161171 break ;
172+ case SDLK_SPACE:
173+ buttonSpace = false ;
174+ break ;
175+ case SDLK_LSHIFT:
176+ buttonShift = false ;
177+ break ;
162178 }
179+ } else if (event.type == SDL_MOUSEMOTION) {
180+ camera.onMouseMoved (event.motion .xrel , event.motion .yrel );
163181 }
164182 }
165183
@@ -168,14 +186,18 @@ int main(int argc, char** argv) {
168186 time += delta;
169187
170188 if (buttonW) {
171- camera.translate ( glm::vec3 ( 0 . 0f , 0 . 0f , - 2 . 0f * delta) );
189+ camera.moveFront (delta * cameraSpeed );
172190 }
173191 if (buttonS) {
174- camera.translate ( glm::vec3 ( 0 . 0f , 0 . 0f , 2 . 0f * delta) );
192+ camera.moveFront (-delta * cameraSpeed );
175193 }if (buttonA) {
176- camera.translate ( glm::vec3 (- 2 . 0f * delta, 0 . 0f , 0 . 0f ) );
194+ camera.moveSideways (-delta * cameraSpeed );
177195 }if (buttonD) {
178- camera.translate (glm::vec3 (2 .0f * delta, 0 .0f , 0 .0f ));
196+ camera.moveSideways (delta * cameraSpeed);
197+ }if (buttonSpace) {
198+ camera.moveUp (delta * cameraSpeed);
199+ }if (buttonShift) {
200+ camera.moveUp (-delta * cameraSpeed);
179201 }
180202
181203 camera.update ();
0 commit comments