Since I started altering the testbed for better maintainability, I prefered to drop this (tested) large change with a single commit. Some changes below: Put some globals in their correct place, Now Testbed uses the MVC pattern (Model-View Controller). This way it becomes better to maintain than using no pattern in my opinion. Fixed some bugs in the debug draw interface. Of course, updated almost all tests because of the differences. Update script.
About
Bounce is a 3D physics engine for games.
To get started with Bounce see readme.txt.
Here is how to control the Testbed. The Testbed is a collection of non-unit tests and examples that helps the author debug features and is not part of the library.
Camera (as in Maya):
- Rotate the scene holding LSHIFT + LMB
- Translate the scene holding LSHIFT + RMB
- Zoom in/out the scene using LSHIFT + Mouse Wheel
Bounce is released under the zlib license.
Features
Common
- Efficient data structures with no use of STL
- Stack and small block allocators
- Built-in math library
- Tunable settings used across the entire library
Collision
- Dynamic tree broadphase
- Static tree "midphase"
- SAT
- GJK
- Spheres, capsules, hulls, triangle meshes
- Optimized pair management
Dynamics
- Contact, friction, restitution
- Mouse, spring, sphere, cone, revolute joint types
- Joint motors, limits
- Constraint graphs
- Simulation islands and sleep management
- Linear time solver
- Stable shape stacking
- One-shot contact manifolds
- Contact clustering, reduction, and persistence
- Contact callbacks: begin, pre-solve, post-solve
- Ray-casting and volume queries
Testbed
- OpenGL with GLFW and GLAD
- UI by imgui
- Mouse picking
- premake build system
Documentation
- Doxygen API documentation
Screenshots
Description
Languages
C
51.7%
C++
47.4%
Lua
0.6%
Makefile
0.3%