summaryrefslogtreecommitdiff
path: root/src/plugin-types.hpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2024-06-27 21:22:50 -0400
committerJonathan Bradley <jcb@pikum.xyz>2024-06-27 21:22:50 -0400
commitb1d926361b9d613ad712ad161f9a8b7ccab4551d (patch)
tree9d0b99125f4b44c4f2bf92e56fafbff461eabdfb /src/plugin-types.hpp
parent89f740220cc04fc85689fce28438be46b655151c (diff)
checkpoint: more explicit callback system
Diffstat (limited to 'src/plugin-types.hpp')
-rw-r--r--src/plugin-types.hpp20
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'};