IEnumerator InternalCoroutine(RoutineData data) { parentNode.SetStatus(NodeCanvas.Framework.Status.Running); if (onStart != null) { onStart.Call(data.flow); } data.flow.BeginBreakBlock(BreakAll); while (data.enumerator.MoveNext()) { while (graphPaused) { yield return(null); } if (onUpdate != null) { onUpdate.Call(data.flow); } yield return(data.enumerator.Current); } data.flow.EndBreakBlock(); parentNode.SetStatus(NodeCanvas.Framework.Status.Resting); onFinish.Call(data.flow); currentCoroutine = null; if (routineQueue != null && routineQueue.Count > 0) { var next = routineQueue.Dequeue(); currentCoroutine = MonoManager.current.StartCoroutine(InternalCoroutine(next)); } }
IEnumerator InternalCoroutine(RoutineData data) { Flow f = data.flow; parentNode.SetStatus(NodeCanvas.Framework.Status.Running); if (onStart != null) { onStart.Call(f); } f.BeginBreakBlock(() => { BreakAll(true); }); while (data.enumerator.MoveNext()) { while (!parentNode.graph.didUpdateLastFrame) { yield return(null); } if (onUpdate != null) { onUpdate.Call(f); } yield return(data.enumerator.Current); } f.EndBreakBlock(); parentNode.SetStatus(NodeCanvas.Framework.Status.Resting); onFinish.Call(f); currentCoroutine = null; if (routineQueue != null && routineQueue.Count > 0) { var next = routineQueue.Dequeue(); currentCoroutine = parentNode.StartCoroutine(InternalCoroutine(next)); } }
void delete_Clicked(object sender, System.EventArgs e) { var delete = sender as Image; RoutineData item = delete.BindingContext as RoutineData; var index = (listRoutines.ItemsSource as ObservableCollection <RoutineData>).IndexOf(item); vm.routines.RemoveAt(index); }
public void _21_1_RoutineDescriptorFromJson() { var basePath = Path.Combine(Application.dataPath, "AutomatineTest/TestGenerated/Editor"); var autoGenOutputPath = Path.Combine(basePath, "_21_1_RoutineDescriptorFromJson.json"); { // generate routine file var routineDict = new RoutineData( "Default_dummy1", new List <string> { "デフォルトルーチン、", "ここでデフォルト動作を設定する" } ); // jsonファイルに吐き出す var serialized = JsonUtility.ToJson(routineDict); // write json file using (var sw = new StreamWriter(autoGenOutputPath)) { sw.Write(serialized); } } { // read json file var body = string.Empty; using (var sr = new StreamReader(autoGenOutputPath)) { body = sr.ReadToEnd(); } var deserialized = JsonUtility.FromJson <RoutineData>(body); var routineName = deserialized.info; var comments = deserialized.comments; var desc = AutoDescriptor.Routine("DummyRoutineContexts <InitialParamType, UpdateParamType> : RoutineBase<InitialParamType, UpdateParamType>", routineName, comments); var outputPath = Path.Combine(basePath, "_21_1_RoutineDescriptorFromJson.cs"); // write class file using (var sw = new StreamWriter(outputPath)) { sw.Write(desc); } } }
///---------------------------------------------------------------------------------------------- //begins a new coroutine protected void Begin(IEnumerator enumerator, Flow f) { var data = new RoutineData(enumerator, f); if (currentCoroutine == null) { currentCoroutine = MonoManager.current.StartCoroutine(InternalCoroutine(data)); return; } if (routineQueue == null) { routineQueue = new Queue <RoutineData>(); } if (allowRoutineQueueing && invocationMode == InvocationMode.QueueCalls) { routineQueue.Enqueue(data); } }