#pragma once

#include "skse64/NiObjects.h"
#include "skse64/NiTextures.h"

#include "skse64/GameTypes.h"

class NiPixelFormat;
class NiPixelData;

class NiRenderedTexture;
class NiRenderedCubeMap;

class NiRenderer : public NiObject
{
public:
	virtual ~NiRenderer();
};

// Unknown class name, No RTTI
class NiRenderManager
{
public:
	static NiRenderManager * GetSingleton();

	MEMBER_FN_PREFIX(NiRenderManager); 
	DEFINE_MEMBER_FN(CreateRenderTarget, BSRenderTargetGroup *, 0x00000000, NiRenderer * dxRenderer, UInt32 type, UInt32 unk1, UInt32 unk2);

	// 00C903B0 - CreateRenderTargetGroup
	// 11539D8
	// 115A2E8 - NiDX9RenderedTextureData
};

// unk2 = 1, all others zero
typedef BSRenderTargetGroup * (* _CreateRenderTargetGroup)(BSFixedString * linkName, UInt32 width, UInt32 height, NiTexture::FormatPrefs * format, UInt32 unk1, UInt8 unk2, UInt32 unk3, UInt32 unk4, UInt32 unk5, UInt32 unk6, UInt32 unk7);
extern const _CreateRenderTargetGroup CreateRenderTargetGroup;
