I would like to report an issue that is happening in my tile-based game. First, please have a look at following topics (that I looked into before going to post this) and you will understand what I mean:
Ok now let me tell you that this bug WAS FIXED once! . Here is what I did to track the issue (sorry for my no internal knowledge of Box2D ):
1) I started to use Box2D after downloading 2.0.1 version (http://sourceforge.net/projects/box2d/f ... p/download) the bug was there.
2) Before I started to get annoyed, someone suggested me to update to latest (trunk) on SourceForge (the latest one there, right now). I did that and noticed that bug was FIXED. I was happy unless I received README_FIRST.txt that said to move Google Code.
2) I moved to Google Code (latest revision: 36) and bug again welcomed me there
3) I further tracked down SVN revisions (on Google Code) and found this was re-introduced in revision 5 (for b2World.cpp). Here is code responsible to re-introduce the bug:
Revision 4: b2World.cpp: Line: 630-ish
Code: Select all
if ((minContact->m_flags & b2Contact::e_touchFlag) == 0)
// This shouldn't happen. Numerical error?
in Revision 5, it got changed to:
Code: Select all
// Is the contact solid?
if (minContact->IsSolid() == false || minContact->IsTouching() == false)
// Restore the sweeps.
b1->m_sweep = backup1;
b2->m_sweep = backup2;
(do a diff of b2World.cpp to see this change)
I know the code is not here to just introduce the bug but it should have been here to handle some other cases etc.
I further noticed that changing "continue" to "break" in above revision 5 code, then the bug disappears (but I don't know the consequences of this on other things).
Then up to revision 31, this code segment stay here and after revision 32 everything get changed and I was lost to have a fix . Basically I just tried to track the cause, not root.
Any help is appreciated. Thanks.