From 65e15ecfa4e126eb6d232f9b6c3b31fa133924b6 Mon Sep 17 00:00:00 2001 From: Nathan Date: Tue, 10 Feb 2026 14:35:54 -0600 Subject: [PATCH] test triangle --- .../TriangleEmbed/TriangleEmbed.cpp | 71 +++++++++++++++++++ .../TriangleEmbed/TriangleEmbed.h | 29 ++++++++ 2 files changed, 100 insertions(+) create mode 100644 src/example_apps/TriangleEmbed/TriangleEmbed.cpp create mode 100644 src/example_apps/TriangleEmbed/TriangleEmbed.h diff --git a/src/example_apps/TriangleEmbed/TriangleEmbed.cpp b/src/example_apps/TriangleEmbed/TriangleEmbed.cpp new file mode 100644 index 0000000..e330468 --- /dev/null +++ b/src/example_apps/TriangleEmbed/TriangleEmbed.cpp @@ -0,0 +1,71 @@ +#include "TriangleEmbed.h" + +bool TriangleEmbed::onEvent(const Archimedes::Event& event) { + + unsigned int type = getEventType(event); + + if(type == getEventType(Archimedes::DoLoadModuleEvent())) { + + Archimedes::DoLoadModuleEvent& e = (Archimedes::DoLoadModuleEvent&) event; + + startModule(e.module); + + return true; + + } else if(type == getEventType(Archimedes::DoUnloadModuleEvent())) { + + Archimedes::DoUnloadModuleEvent& e = (Archimedes::DoUnloadModuleEvent&) event; + + stopModule(e.module); + + return true; + + } else if(type == getEventType(Archimedes::LoadModuleEvent())) { + + return true; + } else if(type == getEventType(Archimedes::UnloadModuleEvent())) { + + return true; + } else if(type == getEventType(Archimedes::AnonymousEvent())) { + return true; + } + + return false; +} + +void TriangleEmbed::run() { + + for(std::string m : runOrder) { + modules[m]->onLoad(); + } + + + // Main loop + while (!done && !runOrder.empty()) { + + for(std::string m : runOrder) { + modules[m]->run(); + } + + handleEvents(); + + for(std::string m : toClose) { + unload(m); + } + toClose.clear(); + + for(auto m : toOpen) { + static Archimedes::Module* n; + if(std::holds_alternative(m)) { + n = load(std::get(m)); + } else { + n = load(std::get(m)); + } + if(n) { + n->onLoad(); + n = nullptr; + } + } + toOpen.clear(); + } +} diff --git a/src/example_apps/TriangleEmbed/TriangleEmbed.h b/src/example_apps/TriangleEmbed/TriangleEmbed.h new file mode 100644 index 0000000..e56b9c0 --- /dev/null +++ b/src/example_apps/TriangleEmbed/TriangleEmbed.h @@ -0,0 +1,29 @@ +#define ENTRYPOINT +#include "Archimedes.h" + +#include "modules/Archimedes-Modules/TestTriangle/TestTriangle.h" + +class TriangleEmbed : public Archimedes::App { + + private: + + void printHelp() override {}; + + bool onEvent(const Archimedes::Event&) override; + + public: + TriangleEmbed() { + Archimedes::Module* m = (Archimedes::Module*) new TestTriangle(Get(), nullptr); + + load(m); + }; + ~TriangleEmbed() {}; + + void handleArgs(const int& argc, char* argv[]) override {}; + + void run() override; + +}; + +#define APP_TYPE TriangleEmbed +#include "endApp.h"