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]--; } }
protected void OnTriggerEnd(ICollisionTriggeringBody triggeringBody) { CollisionTriggerActionEventArgs args = new CollisionTriggerActionEventArgs(triggeringBody); Miscellaneous.InvokeEvent(TriggerEnd, this, args); }