Instead of extending an Application class - because then you gotta implement hook methods that could do nothing instead of just using events like everything else.
And for the ImGUI layer, so that applications can supply their own GUI elements instead of waiting for rendering events and inserting ImGUI commands at the right times.
I might go back on this one - with the start/stop emitted as events, then any exceptions during those phases don't automatically stop the app (exceptions thrown in events don't bring down the application).
Instead of extending an
Application
class - because then you gotta implement hook methods that could do nothing instead of just using events like everything else.And for the ImGUI layer, so that applications can supply their own GUI elements instead of waiting for rendering events and inserting ImGUI commands at the right times.