void decompose()
{
// Unsubsribe from the PostSolve delegate
_world.contactManager.onPostSolve -= onPostSolve;
for (int i = 0; i < parts.Count; i++)
{
var oldFixture = parts[i];
var shape = oldFixture.shape.clone();
object userData = oldFixture.userData;
mainBody.destroyFixture(oldFixture);
var body = BodyFactory.CreateBody(_world, mainBody.position, mainBody.rotation, BodyType.Dynamic, mainBody.userData);
var newFixture = body.createFixture(shape);
newFixture.userData = userData;
parts[i] = newFixture;
body.angularVelocity = _angularVelocitiesCache[i];
body.linearVelocity = _velocitiesCache[i];
}
_world.removeBody(mainBody);
_world.removeBreakableBody(this);
}