Exemple #1
0
        public override bool process(BroadphaseProxy proxy)
        {
            ///terminate further ray tests, once the closestHitFraction reached zero
            if (aabbMin == aabbMax)
            {
                return(false);
            }

            CollisionObject collisionObject = proxy.clientObject;

            SweepAlgorithm algorithm = dispatcher.findSweepAlgorithm(collisionObject, this.collisionObject);

            algorithm(this.collisionObject, end, collisionObject, results, VFixedPoint.Create(0.01f));

            return(true);
        }
        public DefaultCollisionConfiguration()
        {
            sphereSphereCF   = SphereSphereCollisionAlgorithm.processCollision;
            sphereBoxCF      = SphereBoxCollisionAlgorithm.processCollision;
            sphereCapsuleCF  = SphereCapsuleCollisionAlgorithm.processCollision;
            capsuleCapsuleCF = CapsuleCapsuleCollisionAlgorithm.processCollision;
            boxCapsuleCF     = BoxCapsuleCollisionAlgorithm.processCollision;
            boxBoxCF         = BoxBoxCollisionAlgorithm.processCollision;
            emptyCreateFunc  = EmptyAlgorithm.processCollision;

            emptyRaytestFunc   = EmptyRaytestAlgorithm.rayTestSingle;
            sphereRaytestFunc  = SphereRaytestAlgorithm.rayTestSingle;
            boxRaytestFunc     = BoxRaytestAlgorithm.rayTestSingle;
            capsuleRaytestFunc = CapsuleRaytestAlgorithm.rayTestSingle;

            emptySweepFunc          = EmptySweepFunc.objectQuerySingle;
            sphereBoxSweepFunc      = SphereBoxSweepAlgorithm.objectQuerySingle;
            sphereSphereSweepFunc   = SphereSphereSweepAlgorithm.objectQuerySingle;
            sphereCapsuleSweepFunc  = SphereCapsuleSweepAlgorithm.objectQuerySingle;
            capsuleCapsuleSweepFunc = CapsuleCapsuleSweepAlgorithm.objectQuerySingle;
            capsuleBoxSweepFunc     = CapsuleBoxSweepAlgorithm.objectQuerySingle;
        }