SpriteGroup<T> constructor

SpriteGroup<T>(
  1. Iterable<Sprite<T>> parts
)

Implementation

SpriteGroup(Iterable<Sprite<T>> parts) //
  : parts = .unmodifiable(parts) {
  if (this.parts.isEmpty) {
    throw ArgumentError.value(parts, 'parts', 'Must hold at least one.');
  }

  _offsets = .filled(this.parts.length, 0);
  var offset = 0;

  for (var index = 0; index < this.parts.length; index += 1) {
    _offsets[index] = offset;
    offset += this.parts[index].rows;
  }

  _slots = [
    for (final part in this.parts)
      for (var row = 0; row < part.rows; row += 1) //
        _Slot<T>(part, row),
  ];

  rows = _slots.length;
}