#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; }; constexpr int64_t CallbackSignatureLength = 16; using CallbackSignature = char[CallbackSignatureLength]; 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 LoadedPkePlugins; extern PkeArray pkePluginCallbacks; 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 */