From 11b15a5248f66ab01a234c74b84a746e17e7eb19 Mon Sep 17 00:00:00 2001 From: Shariq Shah Date: Sun, 2 Aug 2015 19:08:52 +0500 Subject: [PATCH] Modified cleanup to be called by atexit --- src/game.c | 18 ++++++++++++------ src/main.c | 36 ++++++++++++++++++++++-------------- src/window_system.c | 1 - 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/game.c b/src/game.c index 5afcaf2..1e019fb 100644 --- a/src/game.c +++ b/src/game.c @@ -16,9 +16,9 @@ #include "transform.h" void run(void); -void update(void); +void update(float dt); void render(void); -void debug(void); +void debug(float dt); struct Entity* entity = NULL; @@ -50,33 +50,39 @@ void game_init(void) run(); } -void debug(void) +void debug(float dt) { struct Transform* transform = entity_component_get(entity, C_TRANSFORM); vec3 offset = {0, 5, 0}; + vec3_scale(offset, offset, dt); transform_translate(transform, offset, TS_WORLD); log_message("Position : %.3f, %.3f, %.3f", transform->position[0], transform->position[1], transform->position[2]); } void run(void) { + double last_time = glfwGetTime(); while(!window_should_close()) { - update(); + double curr_time = glfwGetTime(); + float delta_time = (float)(curr_time - last_time); + last_time = curr_time; + + update(delta_time); render(); window_swap_buffers(); window_poll_events(); } } -void update(void) +void update(float dt) { input_update(); if(input_key_state_get(GLFW_KEY_ESCAPE, GLFW_PRESS)) window_set_should_close(1); if(input_map_state_get("MoveUp", GLFW_PRESS)) - debug(); + debug(dt); } void render(void) diff --git a/src/main.c b/src/main.c index 0b7433e..ef0043a 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,7 @@ #define GLEW_STATIC #include #include +#include #include "log.h" #include "window_system.h" @@ -21,28 +22,34 @@ int main(int argc, char** args) else game_init(); - cleanup(); - log_message("Program exiting!"); - return 0; + exit(EXIT_SUCCESS); } int init(void) { int success = 1; - if(window_init("Symmetry", WIN_WIDTH, WIN_HEIGHT)) - { - //Initialize GLEW - glewExperimental = GL_TRUE; - GLenum glewError = glewInit(); - if(glewError != GLEW_OK) - { - log_error("Main:init", "GLEW : %s", glewGetErrorString(glewError)); - success = 0; - } + if(atexit(cleanup) != 0) + { + success = 0; + log_error("Main:init", "Could not register cleanup func with atexit"); } else { - success = 0; + if(window_init("Symmetry", WIN_WIDTH, WIN_HEIGHT)) + { + //Initialize GLEW + glewExperimental = GL_TRUE; + GLenum glewError = glewInit(); + if(glewError != GLEW_OK) + { + log_error("Main:init", "GLEW : %s", glewGetErrorString(glewError)); + success = 0; + } + } + else + { + success = 0; + } } return success; } @@ -51,4 +58,5 @@ void cleanup() { game_cleanup(); window_cleanup(); + log_message("Program exiting!"); } diff --git a/src/window_system.c b/src/window_system.c index cf5fd3e..0b06fb3 100644 --- a/src/window_system.c +++ b/src/window_system.c @@ -30,7 +30,6 @@ int window_init(const char* title, int width, int height) glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); glfwWindowHint(GLFW_FOCUSED, GL_TRUE); //glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); - active_window = glfwCreateWindow(width, height, title, NULL, NULL); if(!active_window) {