Beispiel #1
0
        private void MatryoshkaColliders_TriggerStay(object sender, ColliderTriggerEvent e)
        {
            ColliderTrigger ct = sender as ColliderTrigger;

            if (deepestColliderStay == null)
            {
                deepestColliderStay = ct;
                OnTStay(e.collider, ct.Collider);
            }
            else
            {
                if (greaterOrEqual)
                {
                    if (deepestColliderStay.depth >= ct.depth)
                    {
                        deepestColliderStay = ct;
                        OnTStay(e.collider, ct.Collider);
                    }
                }
                else
                {
                    if (deepestColliderStay.depth > ct.depth)
                    {
                        deepestColliderStay = ct;
                        OnTStay(e.collider, ct.Collider);
                    }
                }
            }
        }
Beispiel #2
0
        private void MatryoshkaColliders_TriggerExit(object sender, ColliderTriggerEvent e)
        {
            ColliderTrigger ct = sender as ColliderTrigger;

            deepestColliderExit = ct;
            if (deepestColliderExit == deepestColliderEnter)
            {
                deepestColliderEnter = null;
            }

            if (deepestColliderExit == deepestColliderStay)
            {
                deepestColliderStay = null;
            }
            OnTExit(e.collider, ct.Collider);

            //if (deepestColliderExit == null)
            //{
            //    deepestColliderExit = ct;
            //    OnTExit(e.collider, ct.Collider);
            //}
            //else
            //{
            //    if (greaterOrEqual)
            //    {
            //        if (deepestColliderExit.depth <= ct.depth)
            //        {
            //            deepestColliderExit = ct;
            //            OnTExit(e.collider, ct.Collider);
            //        }
            //    }
            //    else
            //    {
            //        if (deepestColliderExit.depth < ct.depth)
            //        {
            //            deepestColliderExit = ct;
            //            OnTExit(e.collider, ct.Collider);
            //        }
            //    }

            //    if (deepestColliderExit == deepestColliderEnter)
            //        deepestColliderEnter = null;

            //    if (deepestColliderExit == deepestColliderStay)
            //        deepestColliderStay = null;
            //}
        }
        private void ColliderTrigger_TriggerStay(object sender, ColliderTriggerEvent e)
        {
            ColliderTrigger s = sender as ColliderTrigger;

            if (ignoreSelfColliders)
            {
                if (_colliders.Exists(c => c.Collider == e.collider))
                {
                    return;
                }
            }

            foreach (Collider c in GetStayColliders())
            {
                OnTStay(c, s.Collider);
            }
        }
        private void ColliderTrigger_TriggerEnter(object sender, ColliderTriggerEvent e)
        {
            ColliderTrigger s = sender as ColliderTrigger;

            if (ignoreSelfColliders)
            {
                if (_colliders.Exists(c => c.Collider == e.collider))
                {
                    return;
                }
            }

            if (_currentStayingColliders.IndexOf(e.collider) < 0)
            {
                _currentStayingColliders.Add(e.collider);
                OnTEnter(e.collider, s.Collider);
            }
        }
        private void ColliderTrigger_TriggerExit(object sender, ColliderTriggerEvent e)
        {
            ColliderTrigger s = sender as ColliderTrigger;

            if (ignoreSelfColliders)
            {
                if (_colliders.Exists(c => c.Collider == e.collider))
                {
                    return;
                }
            }

            if (!exitTriggerAll)
            {
                if (_currentStayingColliders.IndexOf(e.collider) >= 0)
                {
                    _currentStayingColliders.Remove(e.collider);
                    OnTExit(e.collider, s.Collider);
                    return;
                }
                return;
            }
            else
            {
                foreach (ColliderTrigger ct in _colliders)
                {
                    if (ct.CurrentStayingCollider.IndexOf(e.collider) >= 0)
                    {
                        return;
                    }
                }

                if (_currentStayingColliders.IndexOf(e.collider) >= 0)
                {
                    _currentStayingColliders.Remove(e.collider);
                    OnTExit(e.collider, s.Collider);
                    return;
                }
            }
        }