private void OnTriggerEnter(Collider other) { GameObject target = other.GetPhysicsRoot().gameObject; ConditionContainer container = target.GetOrAddComponent<ConditionContainer>(); if (container != null) container.AddCondition(condition); if (durationType == DurationType.SpecificDuration) Invoker.Invoke(() => container.RemoveCondition(condition), new Hourglass(duration, Hourglass.CountdownType.ScaledTime)); }
private void OnTriggerExit(Collider other) { if (durationType == DurationType.WhileInTrigger) { GameObject target = other.GetPhysicsRoot().gameObject; ConditionContainer container = target.GetComponent<ConditionContainer>(); if (container != null) container.RemoveCondition(condition); } }
private void AttemptDamage(Collider target) { interimDamageInfo = BuildDamageInfo(target); IEnumerable<DamageReceiver> list = target.GetPhysicsRoot().GetComponents<DamageReceiver>(); foreach (DamageReceiver c in list) { c.RequestHandshake(this); } }