private void Trigger(IElementHider hider, Action <UIMoveTrigger> action)
 {
     if (hider == null)
     {
         RemoveElementHider(hider);
         return;
     }
     hider.GroupHider.elements.ForEach(action);
 }
 public void HideInstantly(IElementHider hider)
 {
     Trigger(hider, t => t.InstantMove(false));
 }
 public void ShowInstantly(IElementHider hider)
 {
     Trigger(hider, t => t.InstantMove(true));
 }
 public void Hide(IElementHider hider)
 {
     Trigger(hider, t => t.Move(false));
 }
 public void Show(IElementHider hider)
 {
     Trigger(hider, t => t.Move(true));
 }
 public void RemoveElementHider(IElementHider hider)
 {
     elementHiders.Remove(hider);
     hider.OnActivate   -= Hide;
     hider.OnDeactivate -= Show;
 }
 public void AddElementHider(IElementHider hider)
 {
     elementHiders.Add(hider);
     hider.OnActivate   += Hide;
     hider.OnDeactivate += Show;
 }