コード例 #1
0
        private IJob ScheduleSequence(object repeatOpt = null)
        {
            IJob job = null;

            Sequence sequence = Sequence.MakeInstance();

            sequence.SetGroupTag(superInvokeTag);

            float seqDelay = 0;

            if (thereIsSequenceDelayToAdd)
            {
                seqDelay = sequenceDelayToAdd;
                thereIsSequenceDelayToAdd = false;
            }

            for (int i = 0; i < tasks.Count; i++)
            {
                DelayedTask t          = tasks[i];
                SingleTask  singleTask = SingleTask.MakeInstance(t.Method, seqDelay + t.DelayTime, null);
                seqDelay = 0;
                sequence.AddSingleTask(singleTask);
            }


            if (thereIsDelayToAdd)
            {
                SingleTask singleTask = SingleTask.MakeInstance(delegate {}, seqDelay + delayToAdd, null);
                sequence.AddSingleTask(singleTask);
            }
            else if (tasks.Count == 0)
            {
                SingleTask singleTask = SingleTask.MakeInstance(delegate {}, seqDelay, null);
                sequence.AddSingleTask(singleTask);
            }

            if (repeatOpt != null)
            {
                RepeatSettings repeatSettings = (RepeatSettings)repeatOpt;
                JobRepeat      jobRepeat      = new JobRepeat()
                {
                    TotalRepeatsNumber = repeatSettings.repeats
                };

                sequence.SetIterativeMode(repeatSettings);

                job = jobRepeat;
            }
            else
            {
                job = new Job();
            }

            sequence.SetJob(job);
            ScheduleBridge.Schedule(sequence);

            ResetStuff();

            return(job);
        }
コード例 #2
0
        private IJobRepeat ActualRunRepeat(float delay, float repeatRate, int repeats, string tag)
        {
            CheckDelay(delay);
            IJob job = null;

            RepeatSettings repeatSettings = new RepeatSettings(delay, repeatRate, repeats);

            if (repeats == SuperInvoke.INFINITY || repeats > 0)
            {
                SetGroupTag(tag);
                job = ScheduleSequence(repeatSettings);
            }

            return((IJobRepeat)job);
        }
コード例 #3
0
 public void SetIterativeMode(RepeatSettings repeatSettings)
 {
     this.repeatSettings = repeatSettings;
     iterativeMode       = true;
 }