summaryrefslogtreecommitdiff
path: root/src/plugin-types.hpp
diff options
context:
space:
mode:
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'};