Universe.Physics.BulletSPlugin.BSAPIXNA.RecordGhostCollisions C# (CSharp) Method

RecordGhostCollisions() public method

public RecordGhostCollisions ( PairCachingGhostObject obj ) : void
obj PairCachingGhostObject
return void
        public void RecordGhostCollisions(PairCachingGhostObject obj)
        {
            IOverlappingPairCache cache = obj.GetOverlappingPairCache();
            ObjectArray<BroadphasePair> pairs = cache.GetOverlappingPairArray();

            DiscreteDynamicsWorld world = (PhysicsScene.World as BulletWorldXNA).world;
            PersistentManifoldArray manifoldArray = new PersistentManifoldArray();
            BroadphasePair collisionPair;
            PersistentManifold contactManifold;

            CollisionObject objA;
            CollisionObject objB;

            ManifoldPoint pt;

            int numPairs = pairs.Count;

            for (int i = 0; i < numPairs; i++)
            {
                manifoldArray.Clear();
                if (LastCollisionDesc < UpdatedCollisions.Length)
                    break;
                collisionPair = world.GetPairCache().FindPair(pairs[i].m_pProxy0, pairs[i].m_pProxy1);
                if (collisionPair == null)
                    continue;

                collisionPair.m_algorithm.GetAllContactManifolds(manifoldArray);
                for (int j = 0; j < manifoldArray.Count; j++)
                {
                    contactManifold = manifoldArray[j];
                    int numContacts = contactManifold.GetNumContacts();
                    objA = contactManifold.GetBody0() as CollisionObject;
                    objB = contactManifold.GetBody1() as CollisionObject;
                    for (int p = 0; p < numContacts; p++)
                    {
                        pt = contactManifold.GetContactPoint(p);
                        if (pt.GetDistance() < 0.0f)
                        {
                            RecordCollision(this, objA, objB, pt.GetPositionWorldOnA(), -pt.m_normalWorldOnB,
                                pt.GetDistance());
                            break;
                        }
                    }
                }
            }
        }
BSAPIXNA