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


struct T_Window;
struct T_FilesWatcher;
struct T_Profiler;
struct T_TextureManager;
struct T_ShaderManager;


struct Globals
{
	static void Init( );
	static void Shutdown( );

	static T_FilesWatcher& Watcher( )	{ return *watcher_; }
	static T_Window& Window( )		{ return *window_; }
	static T_Profiler& Profiler( )		{ return *profiler_; }
	static T_TextureManager& Textures( )	{ return *textures_; }
	static T_ShaderManager& Shaders( )	{ return *shaders_; }

    private:
	static std::unique_ptr< T_FilesWatcher > watcher_;
	static std::unique_ptr< T_Window > window_;
	static std::unique_ptr< T_Profiler > profiler_;
	static std::unique_ptr< T_ShaderManager > shaders_;
	static std::unique_ptr< T_TextureManager > textures_;
};