add method

Cleanup add(
  1. ColliderNode collider
)

Implementation

Cleanup add(ColliderNode collider) {
  assert(
    !_mapping.containsKey(collider),
    'Collider is already registered.',
  );

  final int slot;

  if (_freeSlots.isNotEmpty) {
    slot = _freeSlots.removeLast();
    _colliderIndex[slot] = collider;
    _orderIndex[slot] = -1;
  } else {
    slot = _colliderIndex.length;
    _colliderIndex.add(collider);
    _boundsIndex.add(null);
    _transformIndex.add(null);
    _narrowphaseIndex.add(null);
    _orderIndex.add(-1);
  }

  _colliders.add(collider);
  _mapping[collider] = slot;
  _sorted = false;
  return scope(() => remove(collider));
}