public static UpdateTask UpdateWhile(this UnityEngine.Object sender, Action action, Func <bool> endCondition, Action then = null, UpdateType updateType = UpdateType.normal)
        {
            var task = new UpdateTask(action, endCondition, then, sender ? sender.GetInstanceID() : 0);

            AnilUpdate.Register(task, updateType);
            return(task);
        }
        /// <summary>
        /// this allows you update action, <b>you can recive input</b>
        /// </summary>
        /// <param name="action"><param>will be updated action</param>
        /// <param name="endCnd"><param>do while this condition true</param>
        /// <param name="then">then do</param>
        public static UpdateTask UpdateWhile(Action action, Func <bool> endCnd, Action then = null, UnityEngine.Object calledInstance = null, UpdateType updateType = UpdateType.normal)
        {
#if UNITY_EDITOR
            int id   = calledInstance ? calledInstance.GetInstanceID() : 0;
            var task = new UpdateTask(action, endCnd, then, id);
#else
            var task = new UpdateTask(action, endCondition, then);
#endif
            AnilUpdate.Register(task, updateType);
            return(task);
        }