#pragma once
/*
ApplicationFramework
by John Ryland
Copyright (c) 2023
*/
////////////////////////////////////////////////////////////////////////////////////
// Application Interface
#include "ICoreSystemCollection.h"
namespace ApplicationFramework {
class IWindowSystem;
class IUiSystem;
class IRenderSystem;
class IWindowRenderSurfaceSystem;
class IApplication : public CoreSystemCollection
{
public:
virtual void MainLoop() = 0;
virtual IWindowSystem* WindowSystem() const = 0;
virtual IUiSystem* UiSystem() const = 0;
virtual IRenderSystem* RenderSystem() const = 0;
virtual IWindowRenderSurfaceSystem* WindowRenderSurfaceSystem() const = 0;
};
} // ApplicationFramework namespace