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

53 lines
1.3 KiB
C++
Raw Normal View History

2017-01-20 08:36:52 -05:00
#pragma once
2017-01-19 16:23:59 -05:00
namespace Components
{
class Renderer : public Component
{
public:
typedef void(Callback)();
typedef void(BackendCallback)(IDirect3DDevice9*);
Renderer();
~Renderer();
static int Width();
static int Height();
static void Once(Utils::Slot<Callback> callback);
static void OnFrame(Utils::Slot<Callback> callback);
static void OnBackendFrame(Utils::Slot<BackendCallback> callback);
2017-04-23 07:31:48 -04:00
static void OnDelay(Utils::Slot<Callback> callback, std::chrono::nanoseconds delay);
2017-01-19 16:23:59 -05:00
static void OnDeviceRecoveryEnd(Utils::Slot<Callback> callback);
static void OnDeviceRecoveryBegin(Utils::Slot<Callback> callback);
private:
2017-04-23 07:31:48 -04:00
class DelayedSlot
{
public:
std::chrono::nanoseconds delay;
Utils::Time::Interval interval;
Utils::Slot<Callback> callback;
};
2017-01-19 16:23:59 -05:00
static void FrameStub();
static void FrameHandler();
static void BackendFrameStub();
static void BackendFrameHandler();
2017-04-23 07:31:48 -04:00
static void DelaySignal();
2017-01-19 16:23:59 -05:00
static Utils::Signal<Callback> FrameSignal;
static Utils::Signal<Callback> FrameOnceSignal;
static Utils::Signal<Callback> EndRecoverDeviceSignal;
static Utils::Signal<Callback> BeginRecoverDeviceSignal;
static Utils::Signal<BackendCallback> BackendFrameSignal;
2017-04-23 07:31:48 -04:00
static std::vector<DelayedSlot> DelayedSlots;
2017-01-19 16:23:59 -05:00
};
}