sfml_gl3: add delta_time_seconds

This commit is contained in:
PROP 65 2024-08-29 03:14:25 +00:00 committed by GitHub
parent 4bfc027e08
commit 81ae780756
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 15 additions and 8 deletions

View File

@ -66,6 +66,7 @@ static struct nk_sfml {
struct nk_sfml_device ogl; struct nk_sfml_device ogl;
struct nk_context ctx; struct nk_context ctx;
struct nk_font_atlas atlas; struct nk_font_atlas atlas;
sf::Clock* frame_delta_clock;
} sfml; } sfml;
#ifdef __APPLE__ #ifdef __APPLE__
@ -197,11 +198,15 @@ nk_sfml_render(enum nk_anti_aliasing AA, int max_vertex_buffer, int max_element_
int window_width = sfml.window->getSize().x; int window_width = sfml.window->getSize().x;
int window_height = sfml.window->getSize().y; int window_height = sfml.window->getSize().y;
GLfloat ortho[4][4] = { GLfloat ortho[4][4] = {
{2.0f, 0.0f, 0.0f, 0.0f}, { 2.0f, 0.0f, 0.0f, 0.0f },
{0.0f,-2.0f, 0.0f, 0.0f}, { 0.0f, -2.0f, 0.0f, 0.0f },
{0.0f, 0.0f,-1.0f, 0.0f}, { 0.0f, 0.0f, -1.0f, 0.0f },
{-1.0f,1.0f, 0.0f, 1.0f}, { -1.0f, 1.0f, 0.0f, 1.0f },
}; };
sfml.ctx.delta_time_seconds = (float)((double)sfml.frame_delta_clock->getElapsedTime().asMicroseconds() / 1000000);
sfml.frame_delta_clock->restart();
ortho[0][0] /= (GLfloat)window_width; ortho[0][0] /= (GLfloat)window_width;
ortho[1][1] /= (GLfloat)window_height; ortho[1][1] /= (GLfloat)window_height;
@ -336,6 +341,7 @@ nk_sfml_init(sf::Window* window)
sfml.ctx.clip.paste = nk_sfml_clipboard_paste; sfml.ctx.clip.paste = nk_sfml_clipboard_paste;
sfml.ctx.clip.userdata = nk_handle_ptr(0); sfml.ctx.clip.userdata = nk_handle_ptr(0);
nk_sfml_device_create(); nk_sfml_device_create();
sfml.frame_delta_clock = new sf::Clock();
return &sfml.ctx; return &sfml.ctx;
} }
@ -451,10 +457,10 @@ nk_sfml_handle_event(sf::Event* evt)
} else nk_input_motion(ctx, evt->touch.x, evt->touch.y); } else nk_input_motion(ctx, evt->touch.x, evt->touch.y);
return 1; return 1;
} else if(evt->type == sf::Event::TextEntered) { } else if(evt->type == sf::Event::TextEntered) {
/* 8 ~ backspace */ /* 8 ~ backspace */
if (evt->text.unicode != 8) { if (evt->text.unicode != 8) {
nk_input_unicode(ctx, evt->text.unicode); nk_input_unicode(ctx, evt->text.unicode);
} }
return 1; return 1;
} else if(evt->type == sf::Event::MouseWheelScrolled) { } else if(evt->type == sf::Event::MouseWheelScrolled) {
nk_input_scroll(ctx, nk_vec2(0,evt->mouseWheelScroll.delta)); nk_input_scroll(ctx, nk_vec2(0,evt->mouseWheelScroll.delta));
@ -469,6 +475,7 @@ void nk_sfml_shutdown()
nk_font_atlas_clear(&sfml.atlas); nk_font_atlas_clear(&sfml.atlas);
nk_free(&sfml.ctx); nk_free(&sfml.ctx);
nk_sfml_device_destroy(); nk_sfml_device_destroy();
delete sfml.frame_delta_clock;
memset(&sfml, 0, sizeof(sfml)); memset(&sfml, 0, sizeof(sfml));
} }