#pragma once #include #include class CoreInstance; class World; class RenderEngine; #define GENERATE_FACTORY_GAME_INSTANCE(Class) \ GameInstance* GameFactory(CoreInstance& core) { return new Class(core); } class GameInstance { CoreInstance& core; World* world = nullptr; std::unique_ptr render_engine_; std::atomic is_running = true; // Create a window // Render // Pull events void start(); public: void quit(); // Init vulkan GameInstance(CoreInstance& core); virtual ~GameInstance(); World* GetWorld() const { return world; } friend class CoreInstance; };