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); }
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); }
public void SetIterativeMode(RepeatSettings repeatSettings) { this.repeatSettings = repeatSettings; iterativeMode = true; }