diff options
author | Matthew Kosarek <mattkae@protonmail.com> | 2021-03-27 11:49:56 -0400 |
---|---|---|
committer | Matthew Kosarek <mattkae@protonmail.com> | 2021-03-27 11:49:56 -0400 |
commit | 58488f8eabcc61089e0ae4297f38f10cc28d78c7 (patch) | |
tree | 81ac504e61c57c7228024ad40710f782a3d8c884 /frontend/2d/_collisions/pill_line/main.cpp | |
parent | 26ea81c5893778a7fa4ecbb2e8f561c9edabd0b3 (diff) |
Working reusable simulation loop
Diffstat (limited to 'frontend/2d/_collisions/pill_line/main.cpp')
-rw-r--r-- | frontend/2d/_collisions/pill_line/main.cpp | 53 |
1 files changed, 24 insertions, 29 deletions
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 <cstdio> #include <emscripten/html5.h> #include <unistd.h> #include <pthread.h> @@ -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 |