fix: hook registration fixes

This commit is contained in:
2025-11-18 22:02:44 +01:00
parent d341524e66
commit 8a7cd27875
2 changed files with 19 additions and 9 deletions

View File

@@ -30,8 +30,8 @@ namespace fxn
void RegisterNativeHandler(const NativeHash hash, const NativeHandler handler);
public:
void RegisterNativeHook(const NativeHash hash, const NativeHook& hook);
void UnregisterNativeHook(const NativeHash hash);
size_t RegisterNativeHook(const NativeHash hash, const NativeHook& hook);
void UnregisterNativeHook(const NativeHash hash, size_t index);
public:
bool Invoke(fxn::NativeContext* context);

View File

@@ -105,14 +105,24 @@ namespace fxn
m_NativeHandlers[hash] = handler;
}
void RegisterNativeHook(const NativeHash hash, const NativeHook& hook)
size_t RegisterNativeHook(const NativeHash hash, const NativeHook& hook)
{
m_NativeHooks[hash].push_back(hook);
return m_NativeHooks[hash].size() - 1;
}
void UnregisterNativeHook(const NativeHash hash)
void UnregisterNativeHook(const NativeHash hash, std::size_t index)
{
m_NativeHooks.erase(hash);
auto it = m_NativeHooks.find(hash);
if (it != m_NativeHooks.end())
{
auto& hooks = it->second;
if (index < hooks.size())
{
hooks.erase(hooks.begin() + index);
}
}
}
void DispatchNative(fxn::NativeContext* context, NativeHash hash)
@@ -216,14 +226,14 @@ namespace fxn
m_Impl->RegisterNativeHandler(hash, handler);
}
void FxnManager::RegisterNativeHook(const NativeHash hash, const NativeHook& hook)
size_t FxnManager::RegisterNativeHook(const NativeHash hash, const NativeHook& hook)
{
m_Impl->RegisterNativeHook(hash, hook);
return m_Impl->RegisterNativeHook(hash, hook);
}
void FxnManager::UnregisterNativeHook(const NativeHash hash)
void FxnManager::UnregisterNativeHook(const NativeHash hash, size_t index)
{
m_Impl->UnregisterNativeHook(hash);
m_Impl->UnregisterNativeHook(hash, index);
}
bool FxnManager::Invoke(fxn::NativeContext* context)