示例#1
0
        public static TimerAction?GetCurrentTimer(this TimerBaseBehaviour obj)
        {
            if (obj.Timer == null)
            {
                return(null);
            }
            if (!obj.Timer.TimedActions.Any())
            {
                return(null);
            }

            return(obj.Timer.TimedActions.First());
        }
示例#2
0
        public static void RemoveAction(this TimerBaseBehaviour obj, Action action, bool onlyNext = false)
        {
            for (var i = 0; i < obj.Timer.TimedActions.Count; i++)
            {
                if (!obj.Timer.TimedActions[i].Act.Equals(action))
                {
                    continue;
                }

                obj.Timer.TimedActions.RemoveAt(i);
                i--;

                if (onlyNext)
                {
                    return;
                }
            }
        }
示例#3
0
        public static void AddRepeatedAction(this TimerBaseBehaviour obj, Action action, Func <float> delay)
        {
            var d = delay();

            obj.Timer.TimedActions.Add(new TimerAction {
                Act = action, Delay = d
            });
            obj.Timer.TimedActions.Add(new TimerAction
            {
                Act = () =>
                {
                    if (obj.TimerActive)
                    {
                        obj.AddRepeatedAction(action, delay);
                    }
                },
                Delay = d
            });
        }
示例#4
0
 public static bool ContainsAction(this TimerBaseBehaviour obj, Action action)
 {
     return(obj.Timer.TimedActions.Any(act => act.Act.Equals(action)));
 }
示例#5
0
 public static void AddAction(this TimerBaseBehaviour obj, Action action, Func <float> delay)
 {
     obj.Timer.TimedActions.Add(new TimerAction {
         Act = action, Delay = delay()
     });
 }