I'm having a problem with the box2d as3 b2ContactListener class. I have a class named ContactListener that extends b2ContactListener and overrides the PostSolve method. PostSolve takes 2 parameters, contact which holds the info about the 2 objects that have contact, and impulse which holds info about the contact. I'm using the impulse parameter to decide how hard 2 objects hit and then I apply damage accordingly.
Here is the problem: If I make anything that is circular, and let it slowly roll on the static body I have as the ground, then drop a fairly large object anywhere on the ground, the circle while in motion will get contacts will a repeating impulse that is way to large for just rolling. It causes the rolling circular objects to break when they shouldn't.
Its almost as if its shaking the static body and causing massive damage to objects hundreds of meters away, but it only affects circles.
Can anyone shed some light on the situation? Is this a known issue? Workarounds?
I am using Box2DAs3 version 2.1a.
Update: Once the body enters this weird state of applying to much damage, any circle that touches it gets tons of large impulses. Once something non circular come in contact with the body, it no longer has the problem. Also this problem is not only on static objects but dynamic and kinematic as well.
Update: I have narrowed the problem down further. The contact listener freaks out and apply's mass impulses when the flat edge of a large object hits my ground object. Any object, not just circles, that is awake and touches the ground will get tons of PostSolve method calls. I tried dropping a box with a size of 11 pixels by 11 pixels onto the ground while a circle was rolling on the ground. The bug did not happen. However if the box is 12 by 12 the bug does occur. Also if i rotate a box with a size of 12 by 12 to 0.1 degrees, the bug does not occur. There needs to be a large enough contact area for it to repro. Also density of the box does not effect anything. Also if the box is a rectangle with a width of 10 and height of 100 and the bug will repro. It's almost like just the size of the object is causing the bug, possibly not the area of contact size.
Update: Here is a link to a Box2D forum post I made that has an example swf with source.