Game Engineering II Engine System Wirte-Up

I made a physics system using the GJK(Gilbert–Johnson–Keerthi distance algorithm) and EPA(Expanding Polytope Algorithm) algorithms.
The system is capable of detecting collisions between colliders and fire delegates. It also provides a simple physics simulation that gives objects a basic response when colliding, for example, standing on each other. Also, the system improved the rigid body with more settings so that users can better control objects' physics behavior.
The users must include the header file of what collider they want to use. Then, they must create a PhysicsManager class and colliders they wish to use. After that, the user must pass the pointers to the colliders to the PhysicsManager using the InitializeCollidersList function. After adding the PhysicsManager::UpdateColliders into the tick loop, the system should be able to run.
I learned I should have an intuitive and easy-to-use interface in my project. So, I learned from Unity to add the colliders as a "component." And, of course, the system I made has yet to have any platform-specific codes that we are trying to remove for the whole semester.
I thought the physics engine should be easy because we implemented an SAT last semester. However, the GJK and EPA are much more complicated and complex than I imagined. I spent two and a half weeks learning and debugging and finally made them work. Then, I found that my poor physics knowledge couldn't support me in making a modern physics solver. So I have to make a compromise to make an incomplete solver.

Link to download

How to control:

WASD to move the object1. QE to scale the object1,

Left Right Arrow Key to rotate camera. Up Down Arrow Key to move camera back and forward.

Enter to slow down the time.

You should also read:

Game Engineering II Assignment 5

Tony discussed cameras, platform-independent shaders, and physical game objects in the last class. Those seem easy to implement, but every single one is…