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); } }
private void OnButtonMoveStart(object sender, CollisionTriggerActionEventArgs args) { if (_triggeringBody != null) { return; } //Debug.Log("OnButtonMoveStart."); if (_status == ButtonStatus.Idle) { _status = ButtonStatus.BeingPressed; _triggeringBody = args.CollisionTriggeringBody; } }
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); } }
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]--; } }
public CollisionTriggerActionEventArgs(ICollisionTriggeringBody collisionTriggeringBody) { CollisionTriggeringBody = collisionTriggeringBody; }
protected void OnTriggerEnd(ICollisionTriggeringBody triggeringBody) { CollisionTriggerActionEventArgs args = new CollisionTriggerActionEventArgs(triggeringBody); Miscellaneous.InvokeEvent(TriggerEnd, this, args); }
protected void OnTriggerUpdate(ICollisionTriggeringBody collisionTriggeringBody) { _triggeringBodySet.Add(collisionTriggeringBody); }