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);
            }
        }
        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]--;
            }
        }
Esempio n. 3
0
        protected void OnTriggerEnd(ICollisionTriggeringBody triggeringBody)
        {
            CollisionTriggerActionEventArgs args = new CollisionTriggerActionEventArgs(triggeringBody);

            Miscellaneous.InvokeEvent(TriggerEnd, this, args);
        }