#pragma once #include #include "Shared.h" #include namespace Artifact { class ClientSubsystem; class WindowImpl; /// The client class. class Client: public Engine { public: WindowImpl * window = nullptr; Settings settings; Client() : settings(getClientConfigPath()) {} void addDefaultSubsystems(); void initDefault(); /// Initializes the client. This includes opening a window, creating a WebGPU device, etc. void init(); /// Runs a single iteration of the render loop. void render(); /// Runs a single iteration of the tick loop. void tick(); /// Runs the client. void run(); }; class ClientSubsystem: public BaseSubsystem { public: Client * client = nullptr; virtual void render() {} virtual void tick() {} }; }