#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 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_SyncManager > sync_; static std::unique_ptr< T_ShaderManager > shaders_; static std::unique_ptr< T_TextureManager > textures_; static std::unique_ptr< T_OutputDebugger > odbg_; };