#pragma once
#ifndef REAL_BUILD
# include "externals.hh"
#endif

struct T_OutputDebugger;
struct T_Profiler;
struct T_ShaderManager;
struct T_ShaderProgram;
struct T_TextureManager;
struct T_UIApp;
struct T_UISync;


struct UI
{
    public:
	explicit UI( T_FSPath const& path = {} ) noexcept;
	~UI( ) noexcept;

	static T_UIApp& Main( ) noexcept;
	static T_Profiler& Profiler( ) noexcept;
	static T_TextureManager& Textures( ) noexcept;
	static T_ShaderManager& Shaders( ) noexcept;
	static T_ShaderProgram& FullscreenShader( ) noexcept;
	static T_ShaderProgram& CopyShader( ) noexcept;
	static T_OutputDebugger& ODbg( ) noexcept;
	static T_UISync& Sync( ) noexcept;

    private:
	UI( ) = delete;
	NO_COPY( UI );
	NO_MOVE( UI );
};