iw4x-client/src/Components/Modules/Renderer.cpp
2016-02-11 16:57:28 +01:00

49 lines
853 B
C++

#include "STDInclude.hpp"
namespace Components
{
Utils::Hook Renderer::DrawFrameHook;
wink::signal<wink::slot<Renderer::Callback>> Renderer::FrameSignal;
void __declspec(naked) Renderer::FrameHook()
{
__asm
{
call Renderer::FrameHandler
jmp Renderer::DrawFrameHook.Original
}
}
void Renderer::FrameHandler()
{
Renderer::FrameSignal();
}
void Renderer::OnFrame(Renderer::Callback* callback)
{
Renderer::FrameSignal.connect(callback);
}
int Renderer::Width()
{
return Utils::Hook::Get<int>(0x66E1C68);
}
int Renderer::Height()
{
return Utils::Hook::Get<int>(0x66E1C6C);
}
Renderer::Renderer()
{
// Frame hook
Renderer::DrawFrameHook.Initialize(0x5ACB99, Renderer::FrameHook, HOOK_CALL)->Install();
}
Renderer::~Renderer()
{
Renderer::DrawFrameHook.Uninstall();
Renderer::FrameSignal.clear();
}
}