#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 T_OutputDebugger;
struct T_SyncManager;


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_SyncManager& Sync( )		{ return *sync_; }
	static T_TextureManager& Textures( )	{ return *textures_; }
	static T_ShaderManager& Shaders( )	{ return *shaders_; }
	static T_OutputDebugger& ODbg( )	{ return *odbg_; }

    private:
	static ebcl::T_OwnPtr< T_FilesWatcher > watcher_;
	static ebcl::T_OwnPtr< T_Window > window_;
	static ebcl::T_OwnPtr< T_Profiler > profiler_;
	static ebcl::T_OwnPtr< T_SyncManager > sync_;
	static ebcl::T_OwnPtr< T_ShaderManager > shaders_;
	static ebcl::T_OwnPtr< T_TextureManager > textures_;
	static ebcl::T_OwnPtr< T_OutputDebugger > odbg_;
};