struct IRenderer {
public:
IDXGISwapChain* GetIDXGISwapChain() { return *(IDXGISwapChain**)((uintptr_t)this + 0x14D000); }
Vec3 GetViewCamera() { return *(Vec3*)((uintptr_t)this + 0x17C0); }
int GetWidth() { return *(int*)((uintptr_t)this + 0x14B7F0); }
int GetHeight() { return *(int*)((uintptr_t)this + 0x14D888); }
bool ProjectToScreen(SWorldToScreen* pWorldToScreen) { return pVirtualHook<bool(__thiscall*)(PVOID, SWorldToScreen*)>(this, 0x380)(this, pWorldToScreen); }
float GetCenterX()
{
return GetWidth() * 0.5f;
}
float GetCenterY()
{
return GetHeight() * 0.5f;
}
bool IsFov(Vec3 vPlayerScreen, float size)
{
float ScreenCenterX = GetCenterX();
float ScreenCenterY = GetCenterY();
return (sqrt((vPlayerScreen.x - ScreenCenterX) * (vPlayerScreen.x - ScreenCenterX) + (vPlayerScreen.y - ScreenCenterY) * (vPlayerScreen.y - ScreenCenterY)) <= size);
}
void DrawDynVB(SVF_P3F_C4B_T2F* pBuf, uint16_t* pInds, int nVerts, int nInds, int nPrimType)
{
return pVirtualHook<void(__thiscall*)(PVOID, SVF_P3F_C4B_T2F*, uint16_t*, int, int, int)>(this, 0x208)(this, pBuf, pInds, nVerts, nInds, nPrimType);
}
void SetWhiteTexture()
{
return pVirtualHook<void(__thiscall*)(PVOID)>(this, 0x250)(this);
}
bool WorldToScreen(Vec3 vPos, Vec3& vOut) {
SWorldToScreen pWorldToScreen;
pWorldToScreen.toX = vPos.x;
pWorldToScreen.toY = vPos.y;
pWorldToScreen.toZ = vPos.z;
pWorldToScreen.outX = &vOut.x;
pWorldToScreen.outY = &vOut.y;
pWorldToScreen.outZ = &vOut.z;
ProjectToScreen(&pWorldToScreen);
vOut.x *= (GetWidth() * 0.01f);
vOut.y *= (GetHeight() * 0.01f);
vOut.z *= 1.0f;
return ((vOut.z < 1.0f) && (vOut.x > 0) && (vOut.x < GetWidth()) && (vOut.y > 0) && (vOut.y < GetHeight()));
}
char pad_0x000000[0x14C900]; //0x000000
//------------CD3DRenderer----------—
char m_WinTitle[80]; //0x14C800
HINSTANCE m_hInst; //0x14C850
HWND m_hWnd; //0x14C858
HWND m_hWndDesktop; //0x14C860
HWND m_hWnd2; //0x14C868
HWND m_HwndBrowser; //0x14C870
int m_desktopWidth; //0x14C878
int m_desktopHeight; //0x14C87C
char pad_0x14C880[0x1CC]; //0x14C880
float m_fMemScreenScaleW; //0x14CA4C
float m_fMemScreenScaleH; //0x14CA50
float m_fMemScreenMinScaleW; //0x14CA54
float m_fMemScreenMaxScaleW; //0x14CA58
int m_iMemScreenCompression; //0x14CA5C
class IGPUProfiler* m_profiler; //0x14CA60
ID3D11RenderTargetView* m_pBackBuffer; //0x14CA68
ID3D11RenderTargetView* m_pSecondBackBuffer; //0x14CA70
ID3D11RenderTargetView* m_pZBuffer; //0x14CA78
IDXGISwapChain* m_pSwapChain; // 0x14CB80
char pad_0x14CA88[0xD8]; //0x14CA88
ID3D11Device* m_pd3dDevice; //0x14CB60
ID3D11Device* m_pActuald3dDevice; //0x14CB68
ID3D11DeviceContext* m_pd3dDeviceContext; //0x14CB70
ID3D11DeviceContext* m_pActuald3dDeviceContext; //0x14CB78
ID3D11InputLayout* m_pLastVDeclaration; //0x14CB80
char pad_0000[0x14CB80]; //0x0000
};