summaryrefslogtreecommitdiff
path: root/src/plugins.hpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-12-21 17:44:03 -0500
committerJonathan Bradley <jcb@pikum.xyz>2023-12-23 11:42:23 -0500
commitfa7fc343a0e444da72938fad58d219cf52228976 (patch)
tree24630be0c54f9768a13f32c5970558768e343543 /src/plugins.hpp
parent6fa3b137c74536d2bab77f3309ca5b4c60953fe0 (diff)
plugin checkpoint - multiple plugins and collision callbacks
Diffstat (limited to 'src/plugins.hpp')
-rw-r--r--src/plugins.hpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/plugins.hpp b/src/plugins.hpp
index 2f34c12..64c19f0 100644
--- a/src/plugins.hpp
+++ b/src/plugins.hpp
@@ -1,16 +1,32 @@
#ifndef PKE_PLUGINS_HPP
#define PKE_PLUGINS_HPP
+#include "array.hpp"
+#include "dynamic-array.hpp"
+
struct PKEPluginInterface {
+ // for internal use only
+ void *pluginHandle = nullptr;
void (*OnInit)() = nullptr;
void (*OnTick)(double delta) = nullptr;
void (*OnTeardown)() = nullptr;
void (*OnImGuiRender)() = nullptr;
};
-extern PKEPluginInterface pkePlugin;
+using CallbackSignature = char[16];
+struct PkeCallback {
+ // the 16 char signature(name) of a function
+ CallbackSignature name = {'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'};
+ // the address of the function to call - populated on startup
+ void *func = nullptr;
+};
+
+extern DynArray<PKEPluginInterface> LoadedPkePlugins;
+extern PkeArray<PkeCallback> pkePluginCallbacks;
-void Pke_LoadPlugin(const char *path);
-void Pke_UnloadPlugin();
+void PkePlugin_Load(const char *path);
+PkeCallback *PkePlugin_FindSignature(const CallbackSignature &sig);
+void PkePlugin_SetSignatureFunc(PkeCallback *sig);
+CallbackSignature *PkePlugin_GetSortedSignatures(long &count);
#endif /* PKE_PLUGINS_HPP */