void OnTriggerStay(Collider c)
        {
            ICollisionTriggeringBody collisionTriggeringBody = c.GetComponentInParent <ICollisionTriggeringBody>();

            if (collisionTriggeringBody != null)
            {
                OnTriggerUpdate(collisionTriggeringBody);
            }
        }
        void OnTriggerExit(Collider c)
        {
            //Debug.Log("OnTriggerExits.");
            ICollisionTriggeringBody collisionTriggeringBody =
                c.GetComponentInParent <ICollisionTriggeringBody>();

            if (collisionTriggeringBody != null)
            {
                OnTriggerEnd(collisionTriggeringBody);
            }
        }
Exemple #3
0
 private void OnButtonMoveStart(object sender, CollisionTriggerActionEventArgs args)
 {
     if (_triggeringBody != null)
     {
         return;
     }
     //Debug.Log("OnButtonMoveStart.");
     if (_status == ButtonStatus.Idle)
     {
         _status         = ButtonStatus.BeingPressed;
         _triggeringBody = args.CollisionTriggeringBody;
     }
 }
Exemple #4
0
    private void OnButtonMoveStop(object sender, CollisionTriggerActionEventArgs args)
    {
        ICollisionTriggeringBody triggeringBody = args.CollisionTriggeringBody;

        if (_triggeringBody != triggeringBody)
        {
            return;
        }
        //Debug.Log("OnButtonMoveStop.");
        if (_status == ButtonStatus.BeingPressed)
        {
            Release();
        }
        _triggeringBody = null;
    }
        protected void OnTriggerStart(ICollisionTriggeringBody collisionTriggeringBody)
        {
            int refCountBeforeIncrement;

            if (_triggeringBodyToRefCountDict.TryGetValue(collisionTriggeringBody, out refCountBeforeIncrement))
            {
                _triggeringBodyToRefCountDict[collisionTriggeringBody]++;
            }
            else
            {
                _triggeringBodyToRefCountDict.Add(collisionTriggeringBody, 1);
            }
            if (refCountBeforeIncrement == 0)
            {
                CollisionTriggerActionEventArgs args = new CollisionTriggerActionEventArgs(collisionTriggeringBody);
                Miscellaneous.InvokeEvent <CollisionTriggerActionEventArgs>(TriggerStart,
                                                                            this, args);
            }
        }
Exemple #6
0
    private bool CheckOverlappingWithTriggeringBodyWorker()
    {
        if (_triggeringBody == null)
        {
            throw new InvalidOperationException("_triggeringBody is null.");
        }
        bool correctTriggeringBodyFound = false;

        foreach (Collider overlappedCollider in _overlappedColliders)
        {
            ICollisionTriggeringBody overlappedTriggeringBody =
                overlappedCollider.GetComponentInParent <ICollisionTriggeringBody>();
            if (overlappedTriggeringBody == _triggeringBody)
            {
                correctTriggeringBodyFound = true;
                break;
            }
        }
        return(correctTriggeringBodyFound);
    }
        protected void OnTriggerEnd(ICollisionTriggeringBody collisionTriggeringBody)
        {
            int refCountBeforeDecrement;

            if (!_triggeringBodyToRefCountDict.TryGetValue(collisionTriggeringBody,
                                                           out refCountBeforeDecrement))
            {
                Debug.LogErrorFormat("Unable to find triggering body key. {0}",
                                     collisionTriggeringBody);
                return;
            }
            if (refCountBeforeDecrement == 1)
            {
                _triggeringBodyToRefCountDict.Remove(collisionTriggeringBody);
                CollisionTriggerActionEventArgs args = new CollisionTriggerActionEventArgs(collisionTriggeringBody);
                Miscellaneous.InvokeEvent <CollisionTriggerActionEventArgs>(TriggerEnd,
                                                                            this, args);
            }
            else
            {
                _triggeringBodyToRefCountDict[collisionTriggeringBody]--;
            }
        }
Exemple #8
0
 public CollisionTriggerActionEventArgs(ICollisionTriggeringBody collisionTriggeringBody)
 {
     CollisionTriggeringBody = collisionTriggeringBody;
 }
Exemple #9
0
        protected void OnTriggerEnd(ICollisionTriggeringBody triggeringBody)
        {
            CollisionTriggerActionEventArgs args = new CollisionTriggerActionEventArgs(triggeringBody);

            Miscellaneous.InvokeEvent(TriggerEnd, this, args);
        }
Exemple #10
0
 protected void OnTriggerUpdate(ICollisionTriggeringBody collisionTriggeringBody)
 {
     _triggeringBodySet.Add(collisionTriggeringBody);
 }