#pragma once #include "GameContext.hpp" struct Entity; /** * Base interface that every concrete gameplay component derives from. * * Each component is attached to one entity and receives the shared scene * `GameContext` pointer so it can read global gameplay state. */ class Component { public: Entity *entity = nullptr; GameContext *context = nullptr; virtual void Setup() = 0; virtual void Update(float dt) = 0; virtual void Cleanup() = 0; virtual ~Component() = default; };