#pragma once template class IState { public: virtual ~IState() = default; virtual void Enter(T* entity) = 0; virtual void Update(T* entity, float deltaTime) = 0; virtual void Exit(T* entity) = 0; };