Refactor engine main loop to allow external stepping in Web

This commit is contained in:
Wojtek Figat
2026-02-16 22:32:02 +01:00
parent 0835a6559c
commit 2a9c6bbd1d
3 changed files with 134 additions and 79 deletions

View File

@@ -3,10 +3,48 @@
#if PLATFORM_WEB
#include "Engine/Engine/Engine.h"
#include <emscripten/emscripten.h>
class PlatformMain
{
int32 State = 0;
static void Loop()
{
// Tick engine
Engine::OnLoop();
if (Engine::ShouldExit())
{
// Exit engine
Engine::OnExit();
emscripten_cancel_main_loop();
emscripten_force_exit(Engine::ExitCode);
return;
}
}
public:
static int32 Main()
{
// Initialize engine
int32 result = Engine::OnInit(TEXT(""));
if (result != 0)
return result;
// Setup main loop to be called by Emscripten
emscripten_set_main_loop(Loop, -1, false);
// Run the first loop
Loop();
return 0;
}
};
int main()
{
return Engine::Main(TEXT(""));
return PlatformMain::Main();
}
#endif