transform method

  1. @override
Matrix4 transform(
  1. DoughTransformerContext context
)
override

Creates the Matrix4 which will be used to transform the Dough.child widget.

Implementation

@override
Matrix4 transform(DoughTransformerContext context) {
  final adhesiveDelta = context.delta * context.t / context.recipe.adhesion;

  Matrix4 translate;
  if (applyDelta) {
    if (snapToTargetOnStop) {
      final effDelta =
          -context.delta * (context.controller.isActive ? 1 : context.t);

      translate = Matrix4.translationValues(
        effDelta.x + adhesiveDelta.x,
        effDelta.y + adhesiveDelta.y,
        0,
      );
    } else {
      translate = Matrix4.translationValues(
        -context.delta.x + adhesiveDelta.x,
        -context.delta.y + adhesiveDelta.y,
        0,
      );
    }
  } else {
    translate = Matrix4.translationValues(
      adhesiveDelta.x,
      adhesiveDelta.y,
      0,
    );
  }

  return translate
      .multiplied(DoughTransformations.squishDeformation(context));
}