Bulletsharp DiscreteDynamicsWorld RemoveRigidBody ведет себя странно
Я добавляю и удаляю RigidBodies в DiscreteDynamicsWorld. Если я просто добавляю одно тело за раз и удаляю его снова, это работает как ожидалось.
Если я добавляю больше тел (3-5) одновременно и удаляю некоторые из них снова, это иногда приводит к удалению неправильных предметов.
У меня ушло около дня, чтобы достичь желаемого результата, но я не понимаю, почему он не работает по-другому.
Код:
private ConcurrentBag<RigidBody> _toRemove = new ConcurrentBag<RigidBody>();
while (!_toRemove.IsEmpty)
{
RigidBody body;
if (_toRemove.TryTake(out body))
{
//Not working
InternWorld.RemoveRigidBody(body);
//also not working
InternWorld.CollisionObjectArray.Remove(body);
//working
for (int i = 0; i < InternWorld.CollisionObjectArray.Count; i++)
{
if(body == InternWorld.CollisionObjectArray[i])
{
InternWorld.CollisionObjectArray.RemoveAt(i);
break;
}
}
}
}
Кто-нибудь может объяснить, почему первые два способа не работают? Это ошибка в bullet/bulletsharp или я что-то не так делаю?