104 lines
2.5 KiB
C++
104 lines
2.5 KiB
C++
#include <Editor/EditorMain_win32.h>
|
|
|
|
#include <Core/Application/ApplicationManager.h>
|
|
#include <Core/HAL/Display/Display.h>
|
|
#include <Core/HAL/Event/SystemEvent.h>
|
|
#include <Core/JulietInit.h>
|
|
#include <Core/Logging/LogManager.h>
|
|
#include <Core/Logging/LogTypes.h>
|
|
#include <Graphics/GraphicsConfig.h>
|
|
|
|
#include <cstdlib>
|
|
|
|
// TODO : Replace with message box from framework + call main and not winmain + subsystem
|
|
#include <Graphics/Graphics.h>
|
|
#include <Windows.h>
|
|
|
|
// 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;
|
|
}
|
|
|
|
void Win32EditorApplication::Shutdown()
|
|
{
|
|
Log(LogLevel::Message, LogCategory::Editor, "Shutdown Editor Application...");
|
|
|
|
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;
|
|
}
|