Building VEngine #3 Creating the Application Framework
Until now, the Sandbox owned the entire game loop.
That worked, but it wasn't how a game engine should behave.
The engine should own the loop. The game should only describe what happens every frame.
To make that possible, I introduced an Application base class.
The engine now creates the window, initializes Raylib, runs the main loop, and shuts everything down.
Games simply inherit from Application and override OnUpdate().
This small change completely changes the architecture.
Instead of this:
main() ↓ Sandbox ↓ Raylib
We now have:
main() ↓ Sandbox ↓ Application ↓ Raylib
The engine owns the framework. The game plugs into the framework.
This is also the first place where VEngine starts taking advantage of C++ inheritance and runtime polymorphism.