From 58488f8eabcc61089e0ae4297f38f10cc28d78c7 Mon Sep 17 00:00:00 2001 From: Matthew Kosarek Date: Sat, 27 Mar 2021 11:49:56 -0400 Subject: Working reusable simulation loop --- frontend/2d/_collisions/pill_line/main.cpp | 53 ++++++++++++++---------------- 1 file changed, 24 insertions(+), 29 deletions(-) (limited to 'frontend/2d/_collisions/pill_line/main.cpp') diff --git a/frontend/2d/_collisions/pill_line/main.cpp b/frontend/2d/_collisions/pill_line/main.cpp index 6f85ccc..321a4ba 100644 --- a/frontend/2d/_collisions/pill_line/main.cpp +++ b/frontend/2d/_collisions/pill_line/main.cpp @@ -2,6 +2,8 @@ #include "../../../shared_cpp/types.h" #include "../../../shared_cpp/WebglContext.h" #include "../../../shared_cpp/mathlib.h" +#include "../../../shared_cpp/MainLoop.h" +#include #include #include #include @@ -10,49 +12,42 @@ typedef OrthographicShape<3> TriangleShape; EM_BOOL onPlayClicked(int eventType, const EmscriptenMouseEvent* mouseEvent, void* userData); EM_BOOL onStopClicked(int eventType, const EmscriptenMouseEvent* mouseEvent, void* userData); -EM_BOOL update(double time, void* userData); -void *execute(void* vargp); +EM_BOOL update(float time, void* userData); + +WebglContext context; +OrthographicRenderer renderer; +TriangleShape shape; +MainLoop mainLoop; int main() { - WebglContext context; context.init("#gl_canvas"); - - OrthographicRenderer renderer; - renderer.load(); - - TriangleShape shape; - shape.vertices[0] = { Vector2 { -1, -1 }, Vector4 { 1, 0, 0, 1 } }; - shape.vertices[1] = { Vector2 { 0, 1 }, Vector4{ 0, 1, 0, 1 } }; - shape.vertices[2] = { Vector2 { 1, -1 }, Vector4 { 0, 0, 1, 1 } }; - - shape.load(&renderer); - emscripten_set_click_callback("#gl_canvas_play", NULL, false, onPlayClicked); emscripten_set_click_callback("#gl_canvas_stop", NULL, false, onStopClicked); - - renderer.render(); - shape.render(&renderer); - return 0; } EM_BOOL onPlayClicked(int eventType, const EmscriptenMouseEvent* mouseEvent, void* userData) { + printf("Play clicked\n"); + + renderer.load(); + shape.vertices[0] = { Vector2 { -1, -1 }, Vector4 { 1, 0, 0, 1 } }; + shape.vertices[1] = { Vector2 { 0, 1 }, Vector4{ 0, 1, 0, 1 } }; + shape.vertices[2] = { Vector2 { 1, -1 }, Vector4 { 0, 0, 1, 1 } }; + shape.load(&renderer); + mainLoop.run(update); return true; } EM_BOOL onStopClicked(int eventType, const EmscriptenMouseEvent* mouseEvent, void* userData) { + printf("Stop clicked\n"); + mainLoop.stop(); + shape.unload(); + renderer.unload(); return true; } -EM_BOOL run(int eventType, const EmscriptenMouseEvent* mouseEvent, void* userData) { - pthread_t thread_id; - pthread_create(&thread_id, NULL, execute, NULL); - return true; -} - -void *execute(void* vargp) { - while (true) { - sleep(1); - printf("Executing\n"); - } +EM_BOOL update(float deltaTimeSeconds, void* userData) { + renderer.render(); + shape.render(&renderer); + return true; } \ No newline at end of file -- cgit v1.2.1