#include #include #include #include #include #include #include #include #include // TODO : Replace with message box from framework + call main and not winmain + subsystem #include #include #include // TODO : Think how to do the draw pipeline. // Ex: Expose a Draw method ? // Store a graphics context ? // For now. Put everything in Update down below. // Should split update from draw, update should have a != timestep than graphics (60fps or more) using namespace Juliet; void Win32EditorApplication::Init() { Log(LogLevel::Message, LogCategory::Editor, "Initializing Editor Application..."); GraphicsConfig config; GraphicsDevice = CreateGraphicsDevice(config); MainWindow = CreatePlatformWindow("Juliet Editor", 1280, 720); // TODO : Assign the graphics device to the main window (and detach) Running = MainWindow != nullptr && GraphicsDevice != nullptr; DynamicLibrary = LoadDynamicLibrary("Game.dll"); } void Win32EditorApplication::Shutdown() { Log(LogLevel::Message, LogCategory::Editor, "Shutdown Editor Application..."); UnloadDynamicLibrary(DynamicLibrary); if (MainWindow) { DestroyPlatformWindow(MainWindow); } if (GraphicsDevice) { DestroyGraphicsDevice(GraphicsDevice); } } void Win32EditorApplication::Update() { SystemEvent evt; while (GetEvent(evt)) { if (evt.Type == EventType::Window_Close_Request) { if (evt.Data.Window.AssociatedWindowID == GetWindowID(MainWindow)) { Running = false; } } } // Draw here for now // 1) Acquire a Command Buffer } bool Win32EditorApplication::IsRunning() { return Running; } namespace { Win32EditorApplication EditorApplication; } Win32EditorApplication& GetEditorApplication() { return EditorApplication; } int main(int argc, char** argv) { CreateMutex(0, false, L"Local\\Juliet.Editor"); if (GetLastError() == ERROR_ALREADY_EXISTS) { MessageBox(nullptr, L"An instance of Juliet is already running.", L"Juliet", MB_OK | MB_ICONEXCLAMATION); return EXIT_FAILURE; } StartApplication(EditorApplication, JulietInit_Flags::Display); // Pause here to not close the console window immediatly on stop system("PAUSE"); return EXIT_SUCCESS; }