This is an early draft, needs lots of work. Still need to figure out way
to calculate total length of song. This is hard because xm tracks stream
out zeros when done, only position in track can be found. Position does
not give any direct value of how much more time is left. I think that by
setting the loop count to 1 and seeking until the end I can total up the
number of samples and come up with a length.
Finally, physics update is handled in main thread using steps to get
accuracy in collisions detection instead of moving it to a new thread.
Examples are finished as simple and clear as I could. Finally, physac
module is MORE simpler than in the first version, calculation everything
by the same way for both types of physic objects.
I tryed to add rotated physics a couple of times but I didn't get
anything good to get a base to improve it. Maybe for the next version...
No bugs or strange behaviours found during testing.
physac module base almost finished. All collisions are now resolved
properly and some force functions was added.
COLLIDER_CAPSULE removed for now because in 2D everything is composed by
rectangle and circle colliders...
The last step is move physics update loop into another thread and update
it in a fixed time step based on fps.
physac modules is being redesigned. Physics base behaviour is done and
it is composed by three steps: apply physics, resolve collisions and fix
overlapping.
A basic example is currently in progress. The next steps are try to add
torque and unoriented physic collisions and implement physics basic
functions to add forces. Rigidbody grounding state is automatically
calculated and has a perfect result. Rigidbodies interacts well with
each others.
To achieve physics accuracy, UpdatePhysics() is called a number of times
per frame. In a future, it should be changed to another thread and call
it without any target frame restriction.
Basic physics example has been redone (not finished) using the new
module functions. Forces examples will be redone so I removed it from
branch.