iw4x-client/src/Components/Modules/Renderer.cpp

51 lines
982 B
C++
Raw Normal View History

#include "STDInclude.hpp"
2015-12-23 10:56:02 -05:00
namespace Components
{
Utils::Hook Renderer::DrawFrameHook;
wink::signal<wink::slot<Renderer::Callback>> Renderer::FrameSignal;
2015-12-23 10:56:02 -05:00
void __declspec(naked) Renderer::FrameHook()
{
__asm
{
call Renderer::FrameHandler
jmp Renderer::DrawFrameHook.Original
}
}
void Renderer::FrameHandler()
{
Renderer::FrameSignal();
2015-12-23 10:56:02 -05:00
}
void Renderer::OnFrame(Renderer::Callback* callback)
2015-12-23 10:56:02 -05:00
{
Renderer::FrameSignal.connect(callback);
2015-12-23 10:56:02 -05:00
}
2016-01-12 17:42:05 -05:00
int Renderer::Width()
{
return Utils::Hook::Get<int>(0x66E1C68);
}
int Renderer::Height()
{
return Utils::Hook::Get<int>(0x66E1C6C);
}
2015-12-23 10:56:02 -05:00
Renderer::Renderer()
{
// Frame hook
Renderer::DrawFrameHook.Initialize(0x5ACB99, Renderer::FrameHook, HOOK_CALL)->Install();
}
Renderer::~Renderer()
{
Renderer::DrawFrameHook.Uninstall();
// 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();
2015-12-23 10:56:02 -05:00
}
}