/// <summary> /// Traverses up the parent transforms until it finds a parent that can be triggered. /// </summary> /// <returns>A game object that implements TriggerableParent.</returns> private ITriggerableParent GetParent() { if (triggerParent != null) { return(triggerParent); } ITriggerableParent tParent = transform.parent.gameObject.GetComponent <ITriggerableParent>(); if (tParent == null) { Transform parent = transform.parent; while (tParent == null && parent != null && transform.parent != null) { parent = parent.transform.parent; tParent = transform.parent.gameObject.GetComponent <ITriggerableParent>(); } } if (tParent == null) { throw new NullReferenceException("Could not find a trigger parent for " + gameObject.name + "."); } triggerParent = tParent; return(triggerParent); }
private void Awake() { triggerParent = GetParent(); }