|
|
|
|
@ -8,9 +8,7 @@ |
|
|
|
|
#include <GLFW/glfw3.h> |
|
|
|
|
#include "config.hpp" |
|
|
|
|
#include "render.hpp" |
|
|
|
|
|
|
|
|
|
float mouse_x = 0; |
|
|
|
|
float mouse_y = 0; |
|
|
|
|
#include "bezos.hpp" |
|
|
|
|
|
|
|
|
|
void framebuffer_size_callback(GLFWwindow *window, int width, int height); |
|
|
|
|
|
|
|
|
|
@ -31,12 +29,25 @@ void framebuffer_size_callback(GLFWwindow *, int width, int height) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void mouse_callback(GLFWwindow *window, double xpos, double ypos) { |
|
|
|
|
fmt::println("mouse click: {},{}", xpos, ypos); |
|
|
|
|
mouse_x = xpos; |
|
|
|
|
mouse_y = ypos; |
|
|
|
|
Engine* engine = static_cast<Engine*>(glfwGetWindowUserPointer(window)); |
|
|
|
|
engine->mouse(xpos, ypos); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) |
|
|
|
|
{ |
|
|
|
|
Engine* engine = static_cast<Engine*>(glfwGetWindowUserPointer(window)); |
|
|
|
|
|
|
|
|
|
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) { |
|
|
|
|
glfwSetWindowShouldClose(window, true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void scroll_callback(GLFWwindow *window, double xoffset, double yoffset) { |
|
|
|
|
if (key == GLFW_KEY_W && action == GLFW_PRESS) { |
|
|
|
|
engine->change_slide(-1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (key == GLFW_KEY_S && action == GLFW_PRESS) { |
|
|
|
|
engine->change_slide(1); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
GLFWwindow* create_window() { |
|
|
|
|
@ -51,26 +62,13 @@ GLFWwindow* create_window() { |
|
|
|
|
dbc::check(good, "failed to load GLAD"); |
|
|
|
|
|
|
|
|
|
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); |
|
|
|
|
|
|
|
|
|
glfwSetCursorPosCallback(window, mouse_callback); |
|
|
|
|
glfwSetScrollCallback(window, scroll_callback); |
|
|
|
|
glfwSetKeyCallback(window, key_callback); |
|
|
|
|
|
|
|
|
|
return window; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void process_input(GLFWwindow *window) { |
|
|
|
|
if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) { |
|
|
|
|
glfwSetWindowShouldClose(window, true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(glfwGetKey(window, GLFW_KEY_A) == GLFW_PRESS) { |
|
|
|
|
fmt::println("move window left"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS) { |
|
|
|
|
fmt::println("move window left"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void setup() { |
|
|
|
|
glEnable(GL_DEPTH_TEST); |
|
|
|
|
glEnable(GL_BLEND); |
|
|
|
|
@ -84,7 +82,6 @@ void setup() { |
|
|
|
|
|
|
|
|
|
void update(GLFWwindow* window) { |
|
|
|
|
glfwPollEvents(); |
|
|
|
|
process_input(window); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void render(GLFWwindow* window, Engine &state) { |
|
|
|
|
@ -102,9 +99,11 @@ int main() { |
|
|
|
|
|
|
|
|
|
auto window = create_window(); |
|
|
|
|
setup(); |
|
|
|
|
Engine state; |
|
|
|
|
Deck deck = Bezos::load("lua/builder_test.lua"); |
|
|
|
|
|
|
|
|
|
Engine state(deck); |
|
|
|
|
|
|
|
|
|
// glfwSetWindowUserPointer(window, scene.get());
|
|
|
|
|
glfwSetWindowUserPointer(window, &state); |
|
|
|
|
|
|
|
|
|
while(!glfwWindowShouldClose(window)) { |
|
|
|
|
update(window); |
|
|
|
|
|