removeAt method

void removeAt(
  1. int index
)

Removes the batch item at the given index.

Implementation

void removeAt(int index) {
  final slot = _requireSlot(index);

  final lastSlot = _batchItems.length - 1;
  final removedHandle = _slotToHandle[slot];

  if (slot != lastSlot) {
    // Move last -> slot.
    _batchItems[slot] = _batchItems[lastSlot];
    _sources[slot] = _sources[lastSlot];
    _transforms[slot] = _transforms[lastSlot];
    _colors[slot] = _colors[lastSlot];

    final movedHandle = _slotToHandle[lastSlot];
    _slotToHandle[slot] = movedHandle;
    _handleToSlot[movedHandle] = slot;
  }

  _batchItems.removeLast();
  _sources.removeLast();
  _transforms.removeLast();
  _colors.removeLast();
  _slotToHandle.removeLast();

  _handleToSlot.remove(removedHandle);
  _freeHandle(removedHandle);
}