draw method
void
draw(])
Implementation
void draw(Canvas canvas, List<Sprite> sprites,
[Paint? paint, BlendMode blendMode = BlendMode.modulate]) {
final count = sprites.length;
_ensureCapacity(count);
var i = 0;
for (int j = 0; j < count; j++) {
final sprite = sprites[j];
// --- rect (left, top, right, bottom)
final rect = sprite.flip
? Rect.fromLTWH(
image.width - sprite.texture.right,
sprite.texture.top,
sprite.texture.width,
sprite.texture.height,
)
: sprite.texture;
final ri = i * 4;
_rects[ri + 0] = rect.left;
_rects[ri + 1] = rect.top;
_rects[ri + 2] = rect.right;
_rects[ri + 3] = rect.bottom;
// --- transform (scos, ssin, tx, ty)
final t = sprite.tranform;
final ti = i * 4;
_transforms[ti + 0] = t.scos;
_transforms[ti + 1] = t.ssin;
_transforms[ti + 2] = t.tx;
_transforms[ti + 3] = t.ty;
// --- color (as ARGB int)
_colors[i] = sprite.tint.withAlpha(sprite.opacity).toARGB32();
i++;
}
canvas.drawRawAtlas(
image,
Float32List.sublistView(_transforms, 0, count * 4),
Float32List.sublistView(_rects, 0, count * 4),
Int32List.sublistView(_colors, 0, count),
blendMode,
null,
paint ?? _emptyPaint,
);
}