2016-01-04 14:58:00 -05:00
|
|
|
#include "STDInclude.hpp"
|
2015-12-23 10:56:02 -05:00
|
|
|
|
|
|
|
namespace Components
|
|
|
|
{
|
|
|
|
Utils::Hook Renderer::DrawFrameHook;
|
2016-02-11 05:26:41 -05:00
|
|
|
wink::signal<wink::slot<Renderer::Callback>> Renderer::FrameSignal;
|
2016-03-01 07:37:51 -05:00
|
|
|
wink::signal<wink::slot<Renderer::Callback>> Renderer::FrameOnceSignal;
|
2015-12-23 10:56:02 -05:00
|
|
|
|
|
|
|
void __declspec(naked) Renderer::FrameHook()
|
|
|
|
{
|
|
|
|
__asm
|
|
|
|
{
|
|
|
|
call Renderer::FrameHandler
|
|
|
|
jmp Renderer::DrawFrameHook.Original
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void Renderer::FrameHandler()
|
|
|
|
{
|
2016-02-11 05:26:41 -05:00
|
|
|
Renderer::FrameSignal();
|
2016-03-01 07:37:51 -05:00
|
|
|
Renderer::FrameOnceSignal();
|
|
|
|
Renderer::FrameOnceSignal.clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
void Renderer::Once(Renderer::Callback* callback)
|
|
|
|
{
|
|
|
|
Renderer::FrameOnceSignal.connect(callback);
|
2015-12-23 10:56:02 -05:00
|
|
|
}
|
|
|
|
|
2016-02-11 05:26:41 -05:00
|
|
|
void Renderer::OnFrame(Renderer::Callback* callback)
|
2015-12-23 10:56:02 -05:00
|
|
|
{
|
2016-02-11 05:26:41 -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();
|
2016-03-01 07:37:51 -05:00
|
|
|
Renderer::FrameOnceSignal.clear();
|
2016-02-11 10:57:28 -05:00
|
|
|
Renderer::FrameSignal.clear();
|
2015-12-23 10:56:02 -05:00
|
|
|
}
|
|
|
|
}
|