Overview
This project was created during a class. We already had the basics of the engine, and the goal was to add some features to either optimize the engine or add a new functionality. The project is currently simplistic, but I plan to improve it over time.
Main Features
To avoid having too many GPU command calls, I used the batching system to reduce the number of calls. Objects of the same category are grouped in a layer and it is the content of the layer that is sent to the GPU.
The contact between each object is calculated every frame. To avoid testing for contact between objects that are too far apart, I used a square quadtree to group the objects into cells, and only objects in the same cell will be tested for collision.