コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: Tests21.cs プロジェクト: sassembla/Automatine
    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);
            }
        }
    }
コード例 #5
0
        ///----------------------------------------------------------------------------------------------

        //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);
            }
        }