paintIntoSharedTexture method
Implementation
@override
void paintIntoSharedTexture(RenderTexture texture) {
// TODO (Gordon): could move out this logic to calculate the position only under certain conditions.
final panelKeyContext = shared.panelKey.currentContext;
if (panelKeyContext == null) {
return;
}
RenderBox renderBox = panelKeyContext.findRenderObject() as RenderBox;
Offset panelPosition = renderBox.localToGlobal(Offset.zero);
Offset globalPosition = localToGlobal(Offset.zero) - panelPosition;
final renderer = texture.renderer;
renderer.save();
// Create a single matrix that does: scale(devicePixelRatio) -> translate(position) -> scale(transform)
final scaledTranslateX = globalPosition.dx * devicePixelRatio;
final scaledTranslateY = globalPosition.dy * devicePixelRatio;
renderer.transform(Mat2D.fromScaleAndTranslation(
scaleWidth, scaleHeight, scaledTranslateX, scaledTranslateY));
_shouldAdvance = rivePainter?.paint(
texture,
devicePixelRatio,
size,
elapsedSeconds,
) ??
false;
if (_shouldAdvance) {
restartTickerIfStopped();
} else {
stopTicker();
}
renderer.restore();
}