41 lines
786 B
C++
41 lines
786 B
C++
#pragma once
|
|
#include "plugin_abi.h"
|
|
|
|
#include <queue>
|
|
#include <mutex>
|
|
|
|
enum PluginDataRequestType
|
|
{
|
|
END = 0,
|
|
};
|
|
|
|
union PluginRespondDataCallable
|
|
{
|
|
// Empty for now
|
|
void* UNUSED;
|
|
};
|
|
|
|
class PluginDataRequest
|
|
{
|
|
public:
|
|
PluginDataRequestType type;
|
|
PluginRespondDataCallable func;
|
|
PluginDataRequest(PluginDataRequestType type, PluginRespondDataCallable func) : type(type), func(func) {}
|
|
};
|
|
|
|
class PluginCommunicationHandler
|
|
{
|
|
public:
|
|
void RunFrame();
|
|
void PushRequest(PluginDataRequestType type, PluginRespondDataCallable func);
|
|
|
|
public:
|
|
std::queue<PluginDataRequest> requestQueue = {};
|
|
std::mutex requestMutex;
|
|
|
|
PluginEngineData m_sEngineData {};
|
|
};
|
|
|
|
void InformPluginsDLLLoad(fs::path dllPath, void* address);
|
|
extern PluginCommunicationHandler* g_pPluginCommunicationhandler;
|