/// <summary>
    /// this function will wait for one frame after the register zone select callback happens
    /// so that we clear the click and dont unregister it the same frame we register
    /// </summary>
    /// <param name="callback"></param>
    /// <returns></returns>
    private IEnumerator ZoneUICancelHelper(ZoneSelectDelegate callback)
    {
        yield return(new WaitForEndOfFrame());

        ButtonHandler Handler = new ButtonHandler(ButtonHandler.LeftClick,
                                                  (x, y) =>
        {
            InputController.Instance.UnRegisterHandler(x);
            ZoneSelectCallback -= callback;
        },
                                                  (x, y) => { });

        InputController.Instance.RegisterHandler(Handler);
    }
 public void UnRegisterZoneSelectCallback(ZoneSelectDelegate callback)
 {
     ZoneSelectCallback       -= callback;
     UIwaitingForZoneSelection = false;
 }
 public void RegisterZoneSelectCallback(ZoneSelectDelegate callback)
 {
     ZoneSelectCallback       += callback;
     UIwaitingForZoneSelection = true;
     StartCoroutine(ZoneUICancelHelper(callback));
 }