void OnTriggerEnter(Collider other) { if (!_collisions.ContainsKey(other.GetInstanceID())) { _collisions.Add(other.GetInstanceID(), other); } if (enabled && OnTriggerEntered != null) { DisableColliderComponent disableColliderComponent = other.GetComponent <DisableColliderComponent>(); if (disableColliderComponent) { disableColliderComponent.ColliderDisabled += disableColliderComponent_ColliderDisabled; } OnTriggerEntered(this, other); } if (enabled && IsInTriggerSet) { TriggerSetEnter[_triggerSet].Dispatch(this, other); } }
void sender_ColliderEnabled(DisableColliderComponent sender, Collider other) { Rigidbody rigidbody = other.attachedRigidbody ?? this.GetComponent <Rigidbody>(); rigidbody.WakeUp(); }
void disableColliderComponent_ColliderDisabled(DisableColliderComponent sender, Collider collider) { sender.ColliderDisabled -= disableColliderComponent_ColliderDisabled; sender.ColliderEnabled += sender_ColliderEnabled; OnTriggerExit(collider); }