Use wink-signals
boost.signals sadly requires way too many dependencies, libsigc++ requires too much configuration and all the other libs I tested mostly required constexpr as callbacks (due to passing callbacks via template list), which doesn't server this purpose, so wink-signals seems just about right for what we do.
This commit is contained in:
parent
dea6d5714a
commit
8cef16017e
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -20,3 +20,6 @@
|
|||||||
[submodule "deps/protobuf"]
|
[submodule "deps/protobuf"]
|
||||||
path = deps/protobuf
|
path = deps/protobuf
|
||||||
url = https://github.com/google/protobuf.git
|
url = https://github.com/google/protobuf.git
|
||||||
|
[submodule "deps/Wink-Signals"]
|
||||||
|
path = deps/Wink-Signals
|
||||||
|
url = https://github.com/miguelmartin75/Wink-Signals.git
|
||||||
|
1
deps/Wink-Signals
vendored
Submodule
1
deps/Wink-Signals
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 7fde542d24a7fa0cdac23fbd093f9bd60b9c2c52
|
2
deps/protobuf
vendored
2
deps/protobuf
vendored
@ -1 +1 @@
|
|||||||
Subproject commit bc215089ca7d9da3a2b313b250d1dee665eda438
|
Subproject commit 028d59fccda7a94c3fd39095261caceb77456af3
|
@ -109,6 +109,7 @@ workspace "iw4x"
|
|||||||
"./deps/libtomcrypt/src/headers",
|
"./deps/libtomcrypt/src/headers",
|
||||||
"./deps/libtommath",
|
"./deps/libtommath",
|
||||||
"./deps/protobuf/src",
|
"./deps/protobuf/src",
|
||||||
|
"./deps/Wink-Signals",
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Virtual paths
|
-- Virtual paths
|
||||||
|
@ -5,7 +5,7 @@ namespace Components
|
|||||||
bool AssetHandler::BypassState = false;
|
bool AssetHandler::BypassState = false;
|
||||||
std::map<Game::XAssetType, AssetHandler::IAsset*> AssetHandler::AssetInterfaces;
|
std::map<Game::XAssetType, AssetHandler::IAsset*> AssetHandler::AssetInterfaces;
|
||||||
std::map<Game::XAssetType, AssetHandler::Callback> AssetHandler::TypeCallbacks;
|
std::map<Game::XAssetType, AssetHandler::Callback> AssetHandler::TypeCallbacks;
|
||||||
std::vector<AssetHandler::RestrictCallback> AssetHandler::RestrictCallbacks;
|
wink::signal<wink::slot<AssetHandler::RestrictCallback>> AssetHandler::RestrictSignal;
|
||||||
|
|
||||||
std::map<void*, void*> AssetHandler::Relocations;
|
std::map<void*, void*> AssetHandler::Relocations;
|
||||||
|
|
||||||
@ -110,15 +110,11 @@ namespace Components
|
|||||||
const char* name = Game::DB_GetXAssetNameHandlers[type](asset);
|
const char* name = Game::DB_GetXAssetNameHandlers[type](asset);
|
||||||
if (!name) return false;
|
if (!name) return false;
|
||||||
|
|
||||||
for (auto callback : AssetHandler::RestrictCallbacks)
|
bool restrict = false;
|
||||||
{
|
AssetHandler::RestrictSignal(type, *asset, name, &restrict);
|
||||||
if (!callback(type, *asset, name))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
// If no slot restricts the loading, we can load the asset
|
||||||
|
return (!restrict);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __declspec(naked) AssetHandler::AddAssetStub()
|
void __declspec(naked) AssetHandler::AddAssetStub()
|
||||||
@ -149,9 +145,9 @@ namespace Components
|
|||||||
AssetHandler::TypeCallbacks[type] = callback;
|
AssetHandler::TypeCallbacks[type] = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetHandler::OnLoad(RestrictCallback callback)
|
void AssetHandler::OnLoad(RestrictCallback* callback)
|
||||||
{
|
{
|
||||||
AssetHandler::RestrictCallbacks.push_back(callback);
|
AssetHandler::RestrictSignal.connect(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetHandler::Relocate(void* start, void* to, DWORD size)
|
void AssetHandler::Relocate(void* start, void* to, DWORD size)
|
||||||
@ -279,6 +275,7 @@ namespace Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
AssetHandler::AssetInterfaces.clear();
|
AssetHandler::AssetInterfaces.clear();
|
||||||
|
//AssetHandler::RestrictSignal.clear();
|
||||||
AssetHandler::TypeCallbacks.clear();
|
AssetHandler::TypeCallbacks.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,14 +14,14 @@ namespace Components
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef Game::XAssetHeader(*Callback)(Game::XAssetType type, std::string name);
|
typedef Game::XAssetHeader(*Callback)(Game::XAssetType type, std::string name);
|
||||||
typedef bool(*RestrictCallback)(Game::XAssetType type, Game::XAssetHeader asset, std::string name);
|
typedef void(RestrictCallback)(Game::XAssetType type, Game::XAssetHeader asset, std::string name, bool* restrict);
|
||||||
|
|
||||||
AssetHandler();
|
AssetHandler();
|
||||||
~AssetHandler();
|
~AssetHandler();
|
||||||
const char* GetName() { return "AssetHandler"; };
|
const char* GetName() { return "AssetHandler"; };
|
||||||
|
|
||||||
static void OnFind(Game::XAssetType type, Callback callback);
|
static void OnFind(Game::XAssetType type, Callback callback);
|
||||||
static void OnLoad(RestrictCallback callback);
|
static void OnLoad(RestrictCallback* callback);
|
||||||
|
|
||||||
static void Relocate(void* start, void* to, DWORD size = 4);
|
static void Relocate(void* start, void* to, DWORD size = 4);
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ namespace Components
|
|||||||
|
|
||||||
static std::map<Game::XAssetType, IAsset*> AssetInterfaces;
|
static std::map<Game::XAssetType, IAsset*> AssetInterfaces;
|
||||||
static std::map<Game::XAssetType, Callback> TypeCallbacks;
|
static std::map<Game::XAssetType, Callback> TypeCallbacks;
|
||||||
static std::vector<RestrictCallback> RestrictCallbacks;
|
static wink::signal<wink::slot<RestrictCallback>> RestrictSignal;
|
||||||
|
|
||||||
static std::map<void*, void*> Relocations;
|
static std::map<void*, void*> Relocations;
|
||||||
};
|
};
|
||||||
|
@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
namespace Components
|
namespace Components
|
||||||
{
|
{
|
||||||
Dvar::Var Dedicated::Dedi;
|
wink::signal<wink::slot<Dedicated::Callback>> Dedicated::FrameSignal;
|
||||||
std::vector<Dedicated::Callback> Dedicated::FrameCallbacks;
|
|
||||||
|
|
||||||
bool Dedicated::IsDedicated()
|
bool Dedicated::IsDedicated()
|
||||||
{
|
{
|
||||||
@ -144,18 +143,14 @@ namespace Components
|
|||||||
Network::SendCommand(master, "heartbeat", "IW4");
|
Network::SendCommand(master, "heartbeat", "IW4");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Dedicated::OnFrame(Dedicated::Callback callback)
|
void Dedicated::OnFrame(Dedicated::Callback* callback)
|
||||||
{
|
{
|
||||||
Dedicated::FrameCallbacks.push_back(callback);
|
Dedicated::FrameSignal.connect(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Dedicated::FrameStub()
|
void Dedicated::FrameStub()
|
||||||
{
|
{
|
||||||
for (auto callback : Dedicated::FrameCallbacks)
|
Dedicated::FrameSignal();
|
||||||
{
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
|
|
||||||
Utils::Hook::Call<void()>(0x5A8E80)();
|
Utils::Hook::Call<void()>(0x5A8E80)();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -250,6 +245,6 @@ namespace Components
|
|||||||
|
|
||||||
Dedicated::~Dedicated()
|
Dedicated::~Dedicated()
|
||||||
{
|
{
|
||||||
Dedicated::FrameCallbacks.clear();
|
//Dedicated::FrameSignal.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ namespace Components
|
|||||||
class Dedicated : public Component
|
class Dedicated : public Component
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef void(*Callback)();
|
typedef void(Callback)();
|
||||||
|
|
||||||
Dedicated();
|
Dedicated();
|
||||||
~Dedicated();
|
~Dedicated();
|
||||||
@ -13,11 +13,10 @@ namespace Components
|
|||||||
|
|
||||||
static void Heartbeat();
|
static void Heartbeat();
|
||||||
|
|
||||||
static void OnFrame(Callback callback);
|
static void OnFrame(Callback* callback);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static Dvar::Var Dedi;
|
static wink::signal<wink::slot<Callback>> FrameSignal;
|
||||||
static std::vector<Callback> FrameCallbacks;
|
|
||||||
|
|
||||||
static void MapRotate();
|
static void MapRotate();
|
||||||
static void FrameStub();
|
static void FrameStub();
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace Components
|
namespace Components
|
||||||
{
|
{
|
||||||
std::vector<Dvar::Callback> Dvar::RegistrationCallbacks;
|
wink::signal<wink::slot<Dvar::Callback>> Dvar::RegistrationSignal;
|
||||||
|
|
||||||
Dvar::Var::Var(std::string dvarName) : Var()
|
Dvar::Var::Var(std::string dvarName) : Var()
|
||||||
{
|
{
|
||||||
@ -131,18 +131,15 @@ namespace Components
|
|||||||
return Game::Dvar_RegisterInt(name, value, min, max, flag.val, description);
|
return Game::Dvar_RegisterInt(name, value, min, max, flag.val, description);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Dvar::OnInit(Dvar::Callback callback)
|
void Dvar::OnInit(Dvar::Callback* callback)
|
||||||
{
|
{
|
||||||
Dvar::RegistrationCallbacks.push_back(callback);
|
Dvar::RegistrationSignal.connect(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
Game::dvar_t* Dvar::RegisterName(const char* name, const char* default, Game::dvar_flag flag, const char* description)
|
Game::dvar_t* Dvar::RegisterName(const char* name, const char* default, Game::dvar_flag flag, const char* description)
|
||||||
{
|
{
|
||||||
// Run callbacks
|
// Run callbacks
|
||||||
for (auto callback : Dvar::RegistrationCallbacks)
|
Dvar::RegistrationSignal();
|
||||||
{
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Name watcher
|
// Name watcher
|
||||||
Renderer::OnFrame([] ()
|
Renderer::OnFrame([] ()
|
||||||
@ -205,6 +202,6 @@ namespace Components
|
|||||||
|
|
||||||
Dvar::~Dvar()
|
Dvar::~Dvar()
|
||||||
{
|
{
|
||||||
Dvar::RegistrationCallbacks.clear();
|
//Dvar::RegistrationSignal.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ namespace Components
|
|||||||
class Dvar : public Component
|
class Dvar : public Component
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef void(*Callback)();
|
typedef void(Callback)();
|
||||||
|
|
||||||
struct Flag
|
struct Flag
|
||||||
{
|
{
|
||||||
@ -42,14 +42,14 @@ namespace Components
|
|||||||
~Dvar();
|
~Dvar();
|
||||||
const char* GetName() { return "Dvar"; };
|
const char* GetName() { return "Dvar"; };
|
||||||
|
|
||||||
static void OnInit(Callback callback);
|
static void OnInit(Callback* callback);
|
||||||
|
|
||||||
// Only strings and bools use this type of declaration
|
// Only strings and bools use this type of declaration
|
||||||
template<typename T> static Var Register(const char* name, T value, Flag flag, const char* description);
|
template<typename T> static Var Register(const char* name, T value, Flag flag, const char* description);
|
||||||
template<typename T> static Var Register(const char* name, T value, T min, T max, Flag flag, const char* description);
|
template<typename T> static Var Register(const char* name, T value, T min, T max, Flag flag, const char* description);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static std::vector<Callback> RegistrationCallbacks;
|
static wink::signal<wink::slot<Callback>> RegistrationSignal;
|
||||||
|
|
||||||
static Game::dvar_t* RegisterName(const char* name, const char* default, Game::dvar_flag flag, const char* description);
|
static Game::dvar_t* RegisterName(const char* name, const char* default, Game::dvar_flag flag, const char* description);
|
||||||
};
|
};
|
||||||
|
@ -50,13 +50,14 @@ namespace Components
|
|||||||
return FastFiles::LoadLocalizeZones(data.data(), data.size(), sync);
|
return FastFiles::LoadLocalizeZones(data.data(), data.size(), sync);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Maps::LoadAssetRestrict(Game::XAssetType type, Game::XAssetHeader asset, std::string name)
|
void Maps::LoadAssetRestrict(Game::XAssetType type, Game::XAssetHeader asset, std::string name, bool* restrict)
|
||||||
{
|
{
|
||||||
if (std::find(Maps::CurrentDependencies.begin(), Maps::CurrentDependencies.end(), FastFiles::Current()) != Maps::CurrentDependencies.end())
|
if (std::find(Maps::CurrentDependencies.begin(), Maps::CurrentDependencies.end(), FastFiles::Current()) != Maps::CurrentDependencies.end())
|
||||||
{
|
{
|
||||||
if (type == Game::XAssetType::ASSET_TYPE_GAME_MAP_MP || type == Game::XAssetType::ASSET_TYPE_COL_MAP_MP || type == Game::XAssetType::ASSET_TYPE_GFX_MAP || type == Game::XAssetType::ASSET_TYPE_MAP_ENTS || type == Game::XAssetType::ASSET_TYPE_COM_MAP || type == Game::XAssetType::ASSET_TYPE_FX_MAP)
|
if (type == Game::XAssetType::ASSET_TYPE_GAME_MAP_MP || type == Game::XAssetType::ASSET_TYPE_COL_MAP_MP || type == Game::XAssetType::ASSET_TYPE_GFX_MAP || type == Game::XAssetType::ASSET_TYPE_MAP_ENTS || type == Game::XAssetType::ASSET_TYPE_COM_MAP || type == Game::XAssetType::ASSET_TYPE_FX_MAP)
|
||||||
{
|
{
|
||||||
return false;
|
*restrict = true;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,8 +71,6 @@ namespace Components
|
|||||||
asset.mapEnts->entitystring = mapEntities.data();
|
asset.mapEnts->entitystring = mapEntities.data();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Maps::GetBSPName(char* buffer, size_t size, const char* format, const char* mapname)
|
void Maps::GetBSPName(char* buffer, size_t size, const char* format, const char* mapname)
|
||||||
|
@ -19,7 +19,7 @@ namespace Components
|
|||||||
static std::vector<std::string> CurrentDependencies;
|
static std::vector<std::string> CurrentDependencies;
|
||||||
|
|
||||||
static void GetBSPName(char* buffer, size_t size, const char* format, const char* mapname);
|
static void GetBSPName(char* buffer, size_t size, const char* format, const char* mapname);
|
||||||
static bool LoadAssetRestrict(Game::XAssetType type, Game::XAssetHeader asset, std::string name);
|
static void LoadAssetRestrict(Game::XAssetType type, Game::XAssetHeader asset, std::string name, bool* restrict);
|
||||||
static void LoadMapZones(Game::XZoneInfo *zoneInfo, unsigned int zoneCount, int sync);
|
static void LoadMapZones(Game::XZoneInfo *zoneInfo, unsigned int zoneCount, int sync);
|
||||||
|
|
||||||
void ReallocateEntryPool();
|
void ReallocateEntryPool();
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace Components
|
namespace Components
|
||||||
{
|
{
|
||||||
std::vector<QuickPatch::Callback> QuickPatch::ShutdownCallbacks;
|
wink::signal<wink::slot<QuickPatch::Callback>> QuickPatch::ShutdownSignal;
|
||||||
|
|
||||||
int64_t* QuickPatch::GetStatsID()
|
int64_t* QuickPatch::GetStatsID()
|
||||||
{
|
{
|
||||||
@ -12,17 +12,13 @@ namespace Components
|
|||||||
|
|
||||||
void QuickPatch::OnShutdown(QuickPatch::Callback callback)
|
void QuickPatch::OnShutdown(QuickPatch::Callback callback)
|
||||||
{
|
{
|
||||||
QuickPatch::ShutdownCallbacks.push_back(callback);
|
QuickPatch::ShutdownSignal.connect(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QuickPatch::ShutdownStub(int channel, const char* message)
|
void QuickPatch::ShutdownStub(int channel, const char* message)
|
||||||
{
|
{
|
||||||
Game::Com_Printf(0, message);
|
Game::Com_Printf(0, message);
|
||||||
|
QuickPatch::ShutdownSignal();
|
||||||
for (auto callback : QuickPatch::ShutdownCallbacks)
|
|
||||||
{
|
|
||||||
if (callback) callback();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QuickPatch::UnlockStats()
|
void QuickPatch::UnlockStats()
|
||||||
@ -207,6 +203,6 @@ namespace Components
|
|||||||
|
|
||||||
QuickPatch::~QuickPatch()
|
QuickPatch::~QuickPatch()
|
||||||
{
|
{
|
||||||
QuickPatch::ShutdownCallbacks.clear();
|
//QuickPatch::ShutdownSignal.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,17 +3,17 @@ namespace Components
|
|||||||
class QuickPatch : public Component
|
class QuickPatch : public Component
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef void(*Callback)();
|
typedef void(Callback)();
|
||||||
|
|
||||||
QuickPatch();
|
QuickPatch();
|
||||||
~QuickPatch();
|
~QuickPatch();
|
||||||
const char* GetName() { return "QuickPatch"; };
|
const char* GetName() { return "QuickPatch"; };
|
||||||
|
|
||||||
static void UnlockStats();
|
static void UnlockStats();
|
||||||
static void OnShutdown(Callback callback);
|
static void OnShutdown(Callback* callback);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static std::vector<Callback> ShutdownCallbacks;
|
static wink::signal<wink::slot<Callback>> ShutdownSignal;
|
||||||
|
|
||||||
static int64_t* GetStatsID();
|
static int64_t* GetStatsID();
|
||||||
static void ShutdownStub(int channel, const char* message);
|
static void ShutdownStub(int channel, const char* message);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
namespace Components
|
namespace Components
|
||||||
{
|
{
|
||||||
Utils::Hook Renderer::DrawFrameHook;
|
Utils::Hook Renderer::DrawFrameHook;
|
||||||
std::vector<Renderer::Callback> Renderer::FrameCallbacks;
|
wink::signal<wink::slot<Renderer::Callback>> Renderer::FrameSignal;
|
||||||
|
|
||||||
void __declspec(naked) Renderer::FrameHook()
|
void __declspec(naked) Renderer::FrameHook()
|
||||||
{
|
{
|
||||||
@ -16,15 +16,12 @@ namespace Components
|
|||||||
|
|
||||||
void Renderer::FrameHandler()
|
void Renderer::FrameHandler()
|
||||||
{
|
{
|
||||||
for (auto callback : Renderer::FrameCallbacks)
|
Renderer::FrameSignal();
|
||||||
{
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::OnFrame(Renderer::Callback callback)
|
void Renderer::OnFrame(Renderer::Callback* callback)
|
||||||
{
|
{
|
||||||
Renderer::FrameCallbacks.push_back(callback);
|
Renderer::FrameSignal.connect(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::Width()
|
int Renderer::Width()
|
||||||
@ -46,6 +43,8 @@ namespace Components
|
|||||||
Renderer::~Renderer()
|
Renderer::~Renderer()
|
||||||
{
|
{
|
||||||
Renderer::DrawFrameHook.Uninstall();
|
Renderer::DrawFrameHook.Uninstall();
|
||||||
Renderer::FrameCallbacks.clear();
|
|
||||||
|
// As I don't want to include my fork as submodule, we have to wait till my pull request gets accepted in order to do this.
|
||||||
|
//Renderer::FrameSignal.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ namespace Components
|
|||||||
class Renderer : public Component
|
class Renderer : public Component
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef void(*Callback)();
|
typedef void(Callback)();
|
||||||
|
|
||||||
Renderer();
|
Renderer();
|
||||||
~Renderer();
|
~Renderer();
|
||||||
@ -12,13 +12,13 @@ namespace Components
|
|||||||
static int Width();
|
static int Width();
|
||||||
static int Height();
|
static int Height();
|
||||||
|
|
||||||
static void OnFrame(Callback callback);
|
static void OnFrame(Callback* callback);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void FrameHook();
|
static void FrameHook();
|
||||||
static void FrameHandler();
|
static void FrameHandler();
|
||||||
|
|
||||||
static std::vector<Callback> FrameCallbacks;
|
static wink::signal<wink::slot<Callback>> FrameSignal;
|
||||||
static Utils::Hook DrawFrameHook;
|
static Utils::Hook DrawFrameHook;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -447,7 +447,7 @@ namespace Components
|
|||||||
static_assert(sizeof(Game::XFile) == 40, "Invalid XFile structure!");
|
static_assert(sizeof(Game::XFile) == 40, "Invalid XFile structure!");
|
||||||
static_assert(Game::MAX_XFILE_COUNT == 8, "XFile block enum is invalid!");
|
static_assert(Game::MAX_XFILE_COUNT == 8, "XFile block enum is invalid!");
|
||||||
|
|
||||||
AssetHandler::OnLoad([] (Game::XAssetType type, Game::XAssetHeader asset, std::string name)
|
AssetHandler::OnLoad([] (Game::XAssetType type, Game::XAssetHeader asset, std::string name, bool* restrict)
|
||||||
{
|
{
|
||||||
// static void* blocTable = 0;
|
// static void* blocTable = 0;
|
||||||
//
|
//
|
||||||
@ -471,8 +471,6 @@ namespace Components
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (ZoneBuilder::IsEnabled())
|
if (ZoneBuilder::IsEnabled())
|
||||||
|
@ -59,6 +59,7 @@
|
|||||||
//#include <asio.hpp>
|
//#include <asio.hpp>
|
||||||
#include <json11.hpp>
|
#include <json11.hpp>
|
||||||
#include <tomcrypt.h>
|
#include <tomcrypt.h>
|
||||||
|
#include <wink/signal.hpp>
|
||||||
|
|
||||||
// Protobuf
|
// Protobuf
|
||||||
#include <proto/node.pb.h>
|
#include <proto/node.pb.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user