示例#1
0
        public override void SetAabb(BroadphaseProxy proxy, Vector3 aabbMin, Vector3 aabbMax)
        {
            SimpleBroadphaseProxy simpleProxy = GetSimpleProxyFromProxy(proxy);

            simpleProxy.Minimum = aabbMin;
            simpleProxy.Maximum = aabbMax;
        }
示例#2
0
		public override BroadphaseProxy CreateProxy(Vector3 min, Vector3 max, BroadphaseNativeTypes shapeType, object userData, BroadphaseProxy.CollisionFilterGroups collisionFilterGroup, BroadphaseProxy.CollisionFilterGroups collisionFilterMask)
		{
			if (_proxies.Count >= _maxProxies)
			{
                BulletDebug.Assert(false);
				return null; //should never happen, but don't let the game crash ;-)
			}
            BulletDebug.Assert(min.X <= max.X && min.Y <= max.Y && min.Z <= max.Z);

			SimpleBroadphaseProxy proxy = new SimpleBroadphaseProxy(min, max, shapeType, userData, collisionFilterGroup, collisionFilterMask);
			_proxies.Add(proxy);

			return proxy;
		}
示例#3
0
        public override BroadphaseProxy CreateProxy(Vector3 min, Vector3 max, BroadphaseNativeTypes shapeType, object userData, BroadphaseProxy.CollisionFilterGroups collisionFilterGroup, BroadphaseProxy.CollisionFilterGroups collisionFilterMask)
        {
            if (_proxies.Count >= _maxProxies)
            {
                BulletDebug.Assert(false);
                return(null);                //should never happen, but don't let the game crash ;-)
            }
            BulletDebug.Assert(min.X <= max.X && min.Y <= max.Y && min.Z <= max.Z);

            SimpleBroadphaseProxy proxy = new SimpleBroadphaseProxy(min, max, shapeType, userData, collisionFilterGroup, collisionFilterMask);

            _proxies.Add(proxy);

            return(proxy);
        }
示例#4
0
        public override void RefreshOverlappingPairs()
        {
            for (int i = 0; i < _proxies.Count; i++)
            {
                SimpleBroadphaseProxy proxyA = _proxies[i];

                for (int j = i + 1; j < _proxies.Count; j++)
                {
                    SimpleBroadphaseProxy proxyB = _proxies[j];

                    if (AabbOverlap(proxyA, proxyB))
                    {
                        if (FindPair(proxyA, proxyB) == null)
                        {
                            AddOverlappingPair(proxyA, proxyB);
                        }
                    }
                }
            }

            CheckOverlapCallback check = new CheckOverlapCallback();

            ProcessAllOverlappingPairs(check);
        }
示例#5
0
 public static bool AabbOverlap(SimpleBroadphaseProxy proxyA, SimpleBroadphaseProxy proxyB)
 {
     return proxyA.Minimum.X <= proxyB.Maximum.X && proxyB.Minimum.X <= proxyA.Maximum.X &&
            proxyA.Minimum.Y <= proxyB.Maximum.Y && proxyB.Minimum.Y <= proxyA.Maximum.Y &&
            proxyA.Minimum.Z <= proxyB.Maximum.Z && proxyB.Minimum.Z <= proxyA.Maximum.Z;
 }
示例#6
0
 public static bool AabbOverlap(SimpleBroadphaseProxy proxyA, SimpleBroadphaseProxy proxyB)
 {
     return(proxyA.Minimum.X <= proxyB.Maximum.X && proxyB.Minimum.X <= proxyA.Maximum.X &&
            proxyA.Minimum.Y <= proxyB.Maximum.Y && proxyB.Minimum.Y <= proxyA.Maximum.Y &&
            proxyA.Minimum.Z <= proxyB.Maximum.Z && proxyB.Minimum.Z <= proxyA.Maximum.Z);
 }