public void FindUnions(IDispatcher dispatcher, CollisionWorld collisionWorld) { ObjectArray <BroadphasePair> list = collisionWorld.GetPairCache().GetOverlappingPairArray(); int length = list.Count; if (length > 0) { BroadphasePair[] rawList = list.GetRawArray(); for (int i = 0; i < length; ++i) { BroadphasePair collisionPair = rawList[i]; CollisionObject colObj0 = collisionPair.m_pProxy0.m_clientObject as CollisionObject; CollisionObject colObj1 = collisionPair.m_pProxy1.m_clientObject as CollisionObject; if (((colObj0 != null) && ((colObj0).MergesSimulationIslands())) && ((colObj1 != null) && ((colObj1).MergesSimulationIslands()))) { m_unionFind.Unite((colObj0).GetIslandTag(), (colObj1).GetIslandTag()); } } } }