Will have to resync how to load more meshes. Probably need a command to do it but for now not needed.
35 lines
1.2 KiB
C++
35 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <Core/Common/NonNullPtr.h>
|
|
|
|
namespace Juliet
|
|
{
|
|
struct RenderPass;
|
|
struct CommandList;
|
|
struct Texture;
|
|
struct ColorTargetInfo;
|
|
struct DepthStencilTargetInfo;
|
|
struct Arena;
|
|
|
|
class IApplication
|
|
{
|
|
public:
|
|
virtual ~IApplication() = default;
|
|
virtual void Init(NonNullPtr<Arena> arena) = 0;
|
|
virtual void Shutdown() = 0;
|
|
virtual void Update() = 0;
|
|
virtual bool IsRunning() = 0;
|
|
|
|
// Accessors for Engine Systems
|
|
virtual struct Window* GetPlatformWindow() = 0;
|
|
virtual struct GraphicsDevice* GetGraphicsDevice() = 0;
|
|
|
|
// Render Lifecycle (Engine-Managed Render Loop)
|
|
virtual void OnPreRender(CommandList* cmd) = 0;
|
|
virtual void OnRender(RenderPass* pass, CommandList* cmd) = 0;
|
|
virtual ColorTargetInfo GetColorTargetInfo(Texture* swapchainTexture) = 0;
|
|
virtual DepthStencilTargetInfo* GetDepthTargetInfo() = 0;
|
|
virtual struct Camera GetDebugCamera() = 0;
|
|
};
|
|
} // namespace Juliet
|