#pragma once
#include 
#include 
namespace lt::renderer {
/** The system for putting gore on your display
 *
 * Exclusively operates on components:
 * - RendererComponent
 * - PostEffectsComponent
 * - UserInterfaceComponent
 *
 * Requires read acces on components:
 * - TransformComponent
 */
class System
{
public:
	/** The configurations of this system. */
	struct Properties
	{
	};
	/** The requirements for this system to initialize. */
	struct InitRequirements
	{
		Ref registry;
	};
	/** The requirements for this system to tick. */
	struct TickRequirements
	{
		double delta_time;
	};
	[[nodiscard]] System(InitRequirements requirements);
	System(System &&) = default;
	System(const System &) = delete;
	auto operator=(System &&) -> System & = default;
	auto operator=(const System &) -> System & = delete;
	~System();
	void tick(TickRequirements requirements);
private:
	Ref m_registry;
};
} // namespace lt::renderer