Make the global camera move I guess
This commit is contained in:
parent
f56d1e558e
commit
adb7f45052
|
@ -1,7 +1,7 @@
|
||||||
|
#include <chrono>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "imgui.h"
|
#include "imgui.h"
|
||||||
#include "imgui_impl_glfw.h"
|
#include "imgui_impl_glfw.h"
|
||||||
#include "imgui_impl_opengl3.h"
|
#include "imgui_impl_opengl3.h"
|
||||||
|
@ -111,12 +111,45 @@ int main(int argc, char** argv)
|
||||||
messager.registerCallback(&debug_messagebus_callback);
|
messager.registerCallback(&debug_messagebus_callback);
|
||||||
int window_height, window_width;
|
int window_height, window_width;
|
||||||
glm::mat4 projection;
|
glm::mat4 projection;
|
||||||
glm::mat4 view = glm::lookAt(glm::vec3(4,3,3), glm::vec3(0,0,0), glm::vec3(0,1,0));
|
glm::vec3 camera_position = glm::vec3(4.f, 3.f, 3.f);
|
||||||
|
glm::mat4 view = glm::lookAt(camera_position, glm::vec3(0,0,0), glm::vec3(0,1,0));
|
||||||
|
glm::mat4 model_matrix = glm::mat4(1.0f);
|
||||||
glm::mat4 model_default = glm::mat4(1.0f);
|
glm::mat4 model_default = glm::mat4(1.0f);
|
||||||
|
// The model matrix should eventually be translation * rotation * scale
|
||||||
glm::mat4 mvp_matrix;
|
glm::mat4 mvp_matrix;
|
||||||
|
|
||||||
|
// "Global" camera input controls
|
||||||
|
double camera_velocity = 1.0;
|
||||||
|
glm::vec3 camera_translation;
|
||||||
|
// Tick timer
|
||||||
|
std::chrono::time_point start = std::chrono::high_resolution_clock::now();
|
||||||
while(!glfwWindowShouldClose(window)) {
|
while(!glfwWindowShouldClose(window)) {
|
||||||
glfwPollEvents();
|
// Tick timer
|
||||||
|
auto dt = ((std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::high_resolution_clock::now() - start)).count()) / 100000000.f;
|
||||||
|
start = std::chrono::high_resolution_clock::now();
|
||||||
// Process input.
|
// Process input.
|
||||||
|
glfwPollEvents();
|
||||||
|
|
||||||
|
// Camera movement?
|
||||||
|
double cv_x = 0.f;
|
||||||
|
double cv_y = 0.f;
|
||||||
|
if (glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS) {
|
||||||
|
cv_x += camera_velocity * dt;
|
||||||
|
}
|
||||||
|
if (glfwGetKey(window, GLFW_KEY_A) == GLFW_PRESS) {
|
||||||
|
cv_x -= camera_velocity * dt;
|
||||||
|
}
|
||||||
|
if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) {
|
||||||
|
cv_y += camera_velocity * dt;
|
||||||
|
}
|
||||||
|
if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) {
|
||||||
|
cv_y -= camera_velocity * dt;
|
||||||
|
}
|
||||||
|
camera_translation = glm::vec3(cv_x, cv_y, 0.f);
|
||||||
|
auto ctm = glm::translate(glm::mat4(1.0f), camera_translation);
|
||||||
|
auto ncp = ctm * glm::vec4(camera_position[0], camera_position[1], camera_position[2], 1.0f);
|
||||||
|
camera_position = glm::vec3(ncp[0], ncp[1], ncp[2]);
|
||||||
|
view = glm::lookAt(camera_position, glm::vec3(0,0,0), glm::vec3(0,1,0));
|
||||||
|
|
||||||
// Process messages
|
// Process messages
|
||||||
int messages_treated = messager.processAll();
|
int messages_treated = messager.processAll();
|
||||||
|
@ -133,7 +166,6 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
// Render game geometries
|
// Render game geometries
|
||||||
glfwGetWindowSize(window, &window_width, &window_height);
|
glfwGetWindowSize(window, &window_width, &window_height);
|
||||||
// 45d FoV
|
|
||||||
projection = glm::perspective(glm::radians(fov), (float) window_width / (float) window_height,
|
projection = glm::perspective(glm::radians(fov), (float) window_width / (float) window_height,
|
||||||
0.1f, 100.0f);
|
0.1f, 100.0f);
|
||||||
mvp_matrix = projection * view * model_default;
|
mvp_matrix = projection * view * model_default;
|
||||||
|
|
Loading…
Reference in New Issue