void CheckIsAcceptable(float oldFraction)
        {
            var isAcceptable = (0 <= m_ClosestHit.RigidBodyIndex) && (m_ClosestHit.RigidBodyIndex < NumDynamicBodies);

            if (isAcceptable)
            {
                var body = Bodies[m_ClosestHit.RigidBodyIndex];
                if (IgnoreTriggers)
                {
                    unsafe { isAcceptable = !ColliderUtils.IsTrigger(body.Collider, m_ClosestHit.ColliderKey); }
                }
            }
            if (!isAcceptable)
            {
                m_ClosestHit = m_OldHit;
                NumHits      = 0;
                MaxFraction  = oldFraction;
                m_OldHit     = default(RaycastHit);
            }
        }
Пример #2
0
        public bool AddHit(RaycastHit hit)
        {
            Assert.IsTrue(hit.Fraction < MaxFraction);

            var isAcceptable = (hit.RigidBodyIndex >= 0) && (hit.RigidBodyIndex < NumDynamicBodies);

            if (IgnoreTriggers)
            {
                var body = Bodies[hit.RigidBodyIndex];
                isAcceptable = isAcceptable && !ColliderUtils.IsTrigger(body.Collider, hit.ColliderKey);
            }

            if (!isAcceptable)
            {
                return(false);
            }

            MaxFraction  = hit.Fraction;
            m_ClosestHit = hit;
            NumHits      = 1;
            return(true);
        }