コード例 #1
0
        protected MethodDelay Invoke(Action action, float seconds)
        {
            MethodDelay delay = new MethodDelay();

            StartCoroutine(PInvoke(action, seconds, delay));
            return(delay);
        }
コード例 #2
0
        protected MethodDelay InvokeRepeating(Action action, float seconds, int limit)
        {
            MethodDelay delay = new MethodDelay(true, limit);

            StartCoroutine(PInvoke(action, seconds, delay));
            return(delay);
        }
コード例 #3
0
        public static MethodDelay InvokeRepeating(this MonoBehaviour mono, Action <MonoBehaviour> action, TimeSpan time, int limit = -1)
        {
            MethodDelay delay = new MethodDelay(limit, mono, time, action);

            delay.Run();
            return(delay);
        }
コード例 #4
0
ファイル: MethodDelay.cs プロジェクト: TheMatiaz0/Bridgebot
        /// <summary>
        /// End is always one. If <see cref="MethodDelay"/> is repeating, it'll be invoke after all.
        /// </summary>
        /// <param name="action"></param>
        public MethodDelay SetOnEnd(Action <MonoBehaviour> action, TimeSpan delay = default, int repeatingTime = 0)
        {
            MethodDelay methodDelay = new MethodDelay(repeatingTime, Mainer, delay, action);

            methodDelay.SetScaled(TimeScaled);
            onEndDelay.Add(methodDelay);
            return(methodDelay);
        }
コード例 #5
0
        public static MethodDelay Invoke(this MonoBehaviour mono, Action <MonoBehaviour> action, TimeSpan time)
        {
            MethodDelay delay = new MethodDelay(mono
                                                , time, action);

            delay.Run();
            return(delay);
        }
コード例 #6
0
ファイル: MethodDelay.cs プロジェクト: TheMatiaz0/Bridgebot
        /// <summary>
        /// Cloning is legal only when object hasn't started yet.
        /// </summary>
        /// <returns></returns>
        public MethodDelay Clone()
        {
            if (HasStarted)
            {
                throw new InvalidOperationException("It's impossible to clone object which has started");
            }
            MethodDelay delay = (MethodDelay)base.MemberwiseClone();

            return(delay);
        }
コード例 #7
0
        private IEnumerator PInvoke(Action action, float seconds, MethodDelay delay)
        {
            do
            {
                yield return(new WaitForSeconds(seconds));

                if (delay.HasStopped == false)
                {
                    action.Invoke();
                }
            } while (delay.IsRepeating && ((delay.LimitedRepating == true && --delay.RepatingValue > 0) || delay.LimitedRepating == false) && delay.HasStopped == false);
            delay.InvokeOnEnd();
        }