diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2024-06-27 21:22:50 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2024-06-27 21:22:50 -0400 |
| commit | b1d926361b9d613ad712ad161f9a8b7ccab4551d (patch) | |
| tree | 9d0b99125f4b44c4f2bf92e56fafbff461eabdfb /src/plugin-types.hpp | |
| parent | 89f740220cc04fc85689fce28438be46b655151c (diff) | |
checkpoint: more explicit callback system
Diffstat (limited to 'src/plugin-types.hpp')
| -rw-r--r-- | src/plugin-types.hpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/plugin-types.hpp b/src/plugin-types.hpp index 22f9707..10139b0 100644 --- a/src/plugin-types.hpp +++ b/src/plugin-types.hpp @@ -2,6 +2,21 @@ #define PKE_PLUGIN_TYPES_HPP #include <cstdint> +#include <fstream> + +constexpr int64_t CallbackSignatureLength = 16; +using CallbackSignature = char[CallbackSignatureLength]; + +typedef void (*ParseDelegate)(std::ifstream *stream); +typedef void (*SerializeDelegate)(std::ifstream *stream); +typedef void (*CollisionDelegate)(const void *entHandleLeft, const void *entHandleRight); + +struct PkeEntityTypeInterface { + void (*OnParse)(std::ifstream *stream) = nullptr; + void (*OnSerialize)(std::ostringstream *stream, void *obj) = nullptr; + void (*OnEntityTypeCollision)(const void *entHandleLeft, const void *entHandleRight) = nullptr; + void (*OnEntityInstanceCollision)(const void *entHandleLeft, const void *entHandleRight) = nullptr; +}; struct PKEPluginInterface { // for internal use only @@ -10,11 +25,10 @@ struct PKEPluginInterface { void (*OnTick)(double delta) = nullptr; void (*OnTeardown)() = nullptr; void (*OnImGuiRender)() = nullptr; + void *PkeEntityInterface = nullptr; + std::size_t PkeEntityInterfaceCount = 0; }; -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'}; |
