synchronize method

  1. @internal
void synchronize(
  1. BroadPhase broadPhase,
  2. Transform transform1,
  3. Transform transform2
)

Implementation

@internal
void synchronize(
  BroadPhase broadPhase,
  Transform transform1,
  Transform transform2,
) {
  if (_proxyCount == 0) {
    return;
  }

  for (var i = 0; i < _proxyCount; ++i) {
    final proxy = proxies[i];

    // Compute an AABB that covers the swept shape
    // (may miss some rotation effect).
    final aabb1 = _pool1;
    final aab = _pool2;
    shape.computeAABB(aabb1, transform1, proxy.childIndex);
    shape.computeAABB(aab, transform2, proxy.childIndex);

    proxy.aabb.lowerBound.x = aabb1.lowerBound.x < aab.lowerBound.x
        ? aabb1.lowerBound.x
        : aab.lowerBound.x;
    proxy.aabb.lowerBound.y = aabb1.lowerBound.y < aab.lowerBound.y
        ? aabb1.lowerBound.y
        : aab.lowerBound.y;
    proxy.aabb.upperBound.x = aabb1.upperBound.x > aab.upperBound.x
        ? aabb1.upperBound.x
        : aab.upperBound.x;
    proxy.aabb.upperBound.y = aabb1.upperBound.y > aab.upperBound.y
        ? aabb1.upperBound.y
        : aab.upperBound.y;
    _displacement.x = transform2.p.x - transform1.p.x;
    _displacement.y = transform2.p.y - transform1.p.y;

    broadPhase.moveProxy(proxy.proxyId, proxy.aabb, _displacement);
  }
}