Give ObstacleRestrictor an empty virtual destructor
Otherwise, non-default destructors in derived class are not called properly when handling a derived class through a base pointer.
Otherwise, non-default destructors in derived class are not called properly when handling a derived class through a base pointer.