constrain method

  1. @override
void constrain(
  1. Node node,
  2. double dt
)
override

Called after update is complete, if the constraint has been added to a Node. Override this method to modify the node's property according to the constraint.

Implementation

@override
void constrain(Node node, double dt) {
  Offset targetPosition;

  if (targetNode.spriteBox != node.spriteBox || node.parent == null) {
    // The target node is in another sprite box or has been removed
    return;
  }

  if (targetNode.parent == node.parent) {
    targetPosition = targetNode.position;
  } else {
    targetPosition =
        node.parent!.convertPointFromNode(Offset.zero, targetNode);
  }

  targetPosition += offset;

  if (dampening == null) {
    node.position = targetPosition;
  } else {
    node.position = GameMath.filterPoint(
      node.position,
      targetPosition,
      dampening!,
    );
  }
}