/// <summary>
/// Internal method
/// </summary>
/// <param name="broadPhase"></param>
/// <param name="transform1"></param>
/// <param name="transform2"></param>
protected internal void Synchronize(BroadPhase broadPhase, Transform transform1, Transform transform2)
{
if (ProxyCount == 0)
{
return;
}
for (int i = 0; i < ProxyCount; ++i)
{
FixtureProxy proxy = Proxies[i];
// Compute an AABB that covers the swept shape (may miss some rotation effect).
AABB aabb1 = pool1;
AABB 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);
}
}