void InitMediator(Type mediatorType, IMediatedView view) { IMediator mediator = injector.Get <IMediator>(mediatorType); _mediators.Add(mediator); mediator.mediate += Mediate; mediator.onRemove += OnRemove; mediator.view = view; mediator.OnRegister(); view.OnMediate(); }
public virtual void Mediate(IMediatedView v) { if (mediate != null) { mediate(v); } else { var mediatableView = FindMediatableParent(); if (mediatableView != null) { mediatableView.Mediate(v); } } }
IMediatedView FindMediatableParent() { Type type = typeof(IMediatedView); Transform parent = transform.parent; IMediatedView mediatableView = null; while (parent != null) { mediatableView = (IMediatedView)parent.GetComponent(type); if (mediatableView != null) { break; } parent = parent.transform.parent; } return(mediatableView); }
protected virtual void Mediate(IMediatedView view) { mediate(view); }