public override CollisionAlgorithmCreateFunc GetCollisionAlgorithmCreateFunc(BroadphaseNativeType proxyType0, BroadphaseNativeType proxyType1)
 {
     IntPtr createFunc = btCollisionConfiguration_getCollisionAlgorithmCreateFunc(_native, (int)proxyType0, (int)proxyType1);
     if (proxyType0 == BroadphaseNativeType.SoftBodyShape && proxyType1 == BroadphaseNativeType.SoftBodyShape)
     {
         return new SoftSoftCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (proxyType0 == BroadphaseNativeType.SoftBodyShape && BroadphaseProxy.IsConvex(proxyType1))
     {
         return new SoftRigidCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (BroadphaseProxy.IsConvex(proxyType0) && proxyType1 == BroadphaseNativeType.SoftBodyShape)
     {
         return new SoftRigidCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (proxyType0 == BroadphaseNativeType.SoftBodyShape && BroadphaseProxy.IsConcave(proxyType1))
     {
         return new SoftBodyConcaveCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (BroadphaseProxy.IsConcave(proxyType0) && proxyType1 == BroadphaseNativeType.SoftBodyShape)
     {
         return new SoftBodyConcaveCollisionAlgorithm.SwappedCreateFunc(createFunc);
     }
     return base.GetCollisionAlgorithmCreateFunc(proxyType0, proxyType1);
 }
コード例 #2
0
        public void RegisterCollisionCreateFunc(BroadphaseNativeType proxyType0, BroadphaseNativeType proxyType1, CollisionAlgorithmCreateFunc createFunc)
		{
            if (_collisionCreateFuncs == null)
            {
                _collisionCreateFuncs = new List<CollisionAlgorithmCreateFunc>();
            }
            _collisionCreateFuncs.Add(createFunc);

			btCollisionDispatcher_registerCollisionCreateFunc(_native, proxyType0, proxyType1, createFunc._native);
		}
コード例 #3
0
 public static bool IsInfinite(BroadphaseNativeType proxyType)
 {
     return(btBroadphaseProxy_isInfinite(proxyType));
 }
コード例 #4
0
        public override CollisionAlgorithm getCollisionAlgorithmCreateFunc(BroadphaseNativeType proxyType0, BroadphaseNativeType proxyType1)
        {
            if ((proxyType0 == BroadphaseNativeType.SPHERE_SHAPE_PROXYTYPE) && (proxyType1 == BroadphaseNativeType.SPHERE_SHAPE_PROXYTYPE))
            {
                return(sphereSphereCF);
            }

            if ((proxyType0 == BroadphaseNativeType.SPHERE_SHAPE_PROXYTYPE) && (proxyType1 == BroadphaseNativeType.CAPSULE_SHAPE_PROXYTYPE))
            {
                return(sphereCapsuleCF);
            }

            if ((proxyType0 == BroadphaseNativeType.CAPSULE_SHAPE_PROXYTYPE) && (proxyType1 == BroadphaseNativeType.SPHERE_SHAPE_PROXYTYPE))
            {
                return(sphereCapsuleCF);
            }

            if ((proxyType0 == BroadphaseNativeType.SPHERE_SHAPE_PROXYTYPE) && (proxyType1 == BroadphaseNativeType.BOX_SHAPE_PROXYTYPE))
            {
                return(sphereBoxCF);
            }

            if ((proxyType0 == BroadphaseNativeType.BOX_SHAPE_PROXYTYPE) && (proxyType1 == BroadphaseNativeType.SPHERE_SHAPE_PROXYTYPE))
            {
                return(sphereBoxCF);
            }

            if ((proxyType0 == BroadphaseNativeType.CAPSULE_SHAPE_PROXYTYPE) && (proxyType1 == BroadphaseNativeType.CAPSULE_SHAPE_PROXYTYPE))
            {
                return(capsuleCapsuleCF);
            }

            if ((proxyType0 == BroadphaseNativeType.BOX_SHAPE_PROXYTYPE) && (proxyType1 == BroadphaseNativeType.CAPSULE_SHAPE_PROXYTYPE))
            {
                return(boxCapsuleCF);
            }

            if ((proxyType0 == BroadphaseNativeType.CAPSULE_SHAPE_PROXYTYPE) && (proxyType1 == BroadphaseNativeType.BOX_SHAPE_PROXYTYPE))
            {
                return(boxCapsuleCF);
            }

            if ((proxyType0 == BroadphaseNativeType.BOX_SHAPE_PROXYTYPE) && (proxyType1 == BroadphaseNativeType.BOX_SHAPE_PROXYTYPE))
            {
                return(boxBoxCF);
            }

            // failed to find an algorithm
            return(emptyCreateFunc);
        }
コード例 #5
0
 static extern void btCollisionDispatcher_registerClosestPointsCreateFunc(IntPtr obj, BroadphaseNativeType proxyType0, BroadphaseNativeType proxyType1, IntPtr createFunc);
コード例 #6
0
 static extern bool btBroadphaseProxy_isSoftBody(BroadphaseNativeType proxyType);
コード例 #7
0
 static extern bool btBroadphaseProxy_isNonMoving(BroadphaseNativeType proxyType);
コード例 #8
0
 static extern bool btBroadphaseProxy_isCompound(BroadphaseNativeType proxyType);
コード例 #9
0
 public static bool IsPolyhedral(BroadphaseNativeType proxyType)
 {
     return btBroadphaseProxy_isPolyhedral(proxyType);
 }
コード例 #10
0
 public static bool IsSoftBody(BroadphaseNativeType proxyType)
 {
     return btBroadphaseProxy_isSoftBody(proxyType);
 }
コード例 #11
0
 public static bool IsNonMoving(BroadphaseNativeType proxyType)
 {
     return btBroadphaseProxy_isNonMoving(proxyType);
 }
コード例 #12
0
 public static bool IsInfinite(BroadphaseNativeType proxyType)
 {
     return btBroadphaseProxy_isInfinite(proxyType);
 }
コード例 #13
0
 public static bool IsConvex2D(BroadphaseNativeType proxyType)
 {
     return btBroadphaseProxy_isConvex2d(proxyType);
 }
コード例 #14
0
 public static bool IsPolyhedral(BroadphaseNativeType proxyType)
 {
     return(btBroadphaseProxy_isPolyhedral(proxyType));
 }
コード例 #15
0
 static extern bool btBroadphaseProxy_isConvex2d(BroadphaseNativeType proxyType);
コード例 #16
0
 public static bool IsCompound(BroadphaseNativeType proxyType)
 {
     return(btBroadphaseProxy_isCompound(proxyType));
 }
コード例 #17
0
 static extern bool btBroadphaseProxy_isInfinite(BroadphaseNativeType proxyType);
コード例 #18
0
 public static bool IsConcave(BroadphaseNativeType proxyType)
 {
     return btBroadphaseProxy_isConcave(proxyType);
 }
コード例 #19
0
 static extern bool btBroadphaseProxy_isNonMoving(BroadphaseNativeType proxyType);
コード例 #20
0
 static extern bool btBroadphaseProxy_isPolyhedral(BroadphaseNativeType proxyType);
コード例 #21
0
 static extern bool btBroadphaseProxy_isPolyhedral(BroadphaseNativeType proxyType);
コード例 #22
0
 public abstract CollisionAlgorithmCreateFunc GetCollisionAlgorithmCreateFunc(BroadphaseNativeType proxyType0,
     BroadphaseNativeType proxyType1);
コード例 #23
0
 static extern bool btBroadphaseProxy_isSoftBody(BroadphaseNativeType proxyType);
コード例 #24
0
 static extern void btCompoundShapeChild_setChildShapeType(IntPtr obj, BroadphaseNativeType value);
コード例 #25
0
 public abstract CollisionAlgorithmCreateFunc GetCollisionAlgorithmCreateFunc(BroadphaseNativeType proxyType0,
                                                                              BroadphaseNativeType proxyType1);
コード例 #26
0
 static extern void btCollisionDispatcher_registerCollisionCreateFunc(IntPtr obj, BroadphaseNativeType proxyType0, BroadphaseNativeType proxyType1, IntPtr createFunc);
コード例 #27
0
        public override CollisionAlgorithmCreateFunc GetCollisionAlgorithmCreateFunc(BroadphaseNativeType proxyType0, BroadphaseNativeType proxyType1)
        {
            IntPtr createFunc = btCollisionConfiguration_getCollisionAlgorithmCreateFunc(_native, (int)proxyType0, (int)proxyType1);

            if (proxyType0 == BroadphaseNativeType.BoxShape && proxyType1 == BroadphaseNativeType.BoxShape)
            {
                return(new BoxBoxCollisionAlgorithm.CreateFunc(createFunc));
            }
            if (proxyType0 == BroadphaseNativeType.SphereShape && proxyType1 == BroadphaseNativeType.SphereShape)
            {
                return(new SphereSphereCollisionAlgorithm.CreateFunc(createFunc));
            }
            if (proxyType0 == BroadphaseNativeType.SphereShape && proxyType1 == BroadphaseNativeType.TriangleShape)
            {
                return(new SphereTriangleCollisionAlgorithm.CreateFunc(createFunc));
            }
            if (proxyType0 == BroadphaseNativeType.TriangleShape && proxyType1 == BroadphaseNativeType.SphereShape)
            {
                return(new SphereTriangleCollisionAlgorithm.CreateFunc(createFunc));
            }
            if (proxyType0 == BroadphaseNativeType.StaticPlaneShape && BroadphaseProxy.IsConvex(proxyType1))
            {
                return(new ConvexPlaneCollisionAlgorithm.CreateFunc(createFunc));
            }
            if (proxyType1 == BroadphaseNativeType.StaticPlaneShape && BroadphaseProxy.IsConvex(proxyType0))
            {
                return(new ConvexPlaneCollisionAlgorithm.CreateFunc(createFunc));
            }
            if (BroadphaseProxy.IsConvex(proxyType0) && BroadphaseProxy.IsConvex(proxyType1))
            {
                return(new ConvexConvexAlgorithm.CreateFunc(createFunc));
            }
            if (BroadphaseProxy.IsConvex(proxyType0) && BroadphaseProxy.IsConcave(proxyType1))
            {
                return(new ConvexConcaveCollisionAlgorithm.CreateFunc(createFunc));
            }
            if (BroadphaseProxy.IsConvex(proxyType1) && BroadphaseProxy.IsConcave(proxyType0))
            {
                return(new ConvexConcaveCollisionAlgorithm.SwappedCreateFunc(createFunc));
            }
            if (BroadphaseProxy.IsCompound(proxyType0))
            {
                return(new CompoundCompoundCollisionAlgorithm.CreateFunc(createFunc));
            }
            if (BroadphaseProxy.IsCompound(proxyType1))
            {
                return(new CompoundCompoundCollisionAlgorithm.SwappedCreateFunc(createFunc));
            }
            return(new EmptyAlgorithm.CreateFunc(createFunc));
        }
コード例 #28
0
 static extern void btCompoundShapeChild_setChildShapeType(IntPtr obj, BroadphaseNativeType value);
コード例 #29
0
        public static bool IsConvex(BroadphaseNativeType proxyType)
		{
			return btBroadphaseProxy_isConvex(proxyType);
		}
コード例 #30
0
 public static bool IsNonMoving(BroadphaseNativeType proxyType)
 {
     return(btBroadphaseProxy_isNonMoving(proxyType));
 }
コード例 #31
0
 static extern bool btBroadphaseProxy_isCompound(BroadphaseNativeType proxyType);
コード例 #32
0
 public static bool IsSoftBody(BroadphaseNativeType proxyType)
 {
     return(btBroadphaseProxy_isSoftBody(proxyType));
 }
コード例 #33
0
 static extern bool btBroadphaseProxy_isConvex2d(BroadphaseNativeType proxyType);
コード例 #34
0
 public static bool IsConcave(BroadphaseNativeType proxyType)
 {
     return(btBroadphaseProxy_isConcave(proxyType));
 }
コード例 #35
0
 static extern bool btBroadphaseProxy_isInfinite(BroadphaseNativeType proxyType);
コード例 #36
0
 public override CollisionAlgorithmCreateFunc GetCollisionAlgorithmCreateFunc(BroadphaseNativeType proxyType0, BroadphaseNativeType proxyType1)
 {
     IntPtr createFunc = btCollisionConfiguration_getCollisionAlgorithmCreateFunc(_native, (int)proxyType0, (int)proxyType1);
     if (proxyType0 == BroadphaseNativeType.BoxShape && proxyType1 == BroadphaseNativeType.BoxShape)
     {
         return new BoxBoxCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (proxyType0 == BroadphaseNativeType.SphereShape && proxyType1 == BroadphaseNativeType.SphereShape)
     {
         return new SphereSphereCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (proxyType0 == BroadphaseNativeType.SphereShape && proxyType1 == BroadphaseNativeType.TriangleShape)
     {
         return new SphereTriangleCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (proxyType0 == BroadphaseNativeType.TriangleShape && proxyType1 == BroadphaseNativeType.SphereShape)
     {
         return new SphereTriangleCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (proxyType0 == BroadphaseNativeType.StaticPlaneShape && BroadphaseProxy.IsConvex(proxyType1))
     {
         return new ConvexPlaneCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (proxyType1 == BroadphaseNativeType.StaticPlaneShape && BroadphaseProxy.IsConvex(proxyType0))
     {
         return new ConvexPlaneCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (BroadphaseProxy.IsConvex(proxyType0) && BroadphaseProxy.IsConvex(proxyType1))
     {
         return new ConvexConvexAlgorithm.CreateFunc(createFunc);
     }
     if (BroadphaseProxy.IsConvex(proxyType0) && BroadphaseProxy.IsConcave(proxyType1))
     {
         return new ConvexConcaveCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (BroadphaseProxy.IsConvex(proxyType1) && BroadphaseProxy.IsConcave(proxyType0))
     {
         return new ConvexConcaveCollisionAlgorithm.SwappedCreateFunc(createFunc);
     }
     if (BroadphaseProxy.IsCompound(proxyType0))
     {
         return new CompoundCompoundCollisionAlgorithm.CreateFunc(createFunc);
     }
     if (BroadphaseProxy.IsCompound(proxyType1))
     {
         return new CompoundCompoundCollisionAlgorithm.SwappedCreateFunc(createFunc);
     }
     return new EmptyAlgorithm.CreateFunc(createFunc);
 }
コード例 #37
0
 public static bool IsCompound(BroadphaseNativeType proxyType)
 {
     return btBroadphaseProxy_isCompound(proxyType);
 }