12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using ChivaVR.State;
- using ChivaXR;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class ProcedureStateGraphController : MonoBehaviour
- {
- [Header("是否使用原ProcedureManager的线性执行")]
- public bool linerRunning = true; //线性执行,
- public bool orderRunGraph = false;
- public List<StateGraphBase> stateGraphBases = new List<StateGraphBase>();
- private int currentStateGraphID = 0;
- private bool stateGraphRuning = false;
- #region StateGraph
- public void InitStateGraphBases()
- {
- if (stateGraphBases.Count == 0)
- {
- Debug.LogError("暂无流程图,退出流程执行");
- return;
- }
- currentStateGraphID = 0;
- EnterStateGraphByIndex(currentStateGraphID);
- }
- public void EnterStateGraphByIndex(int index)
- {
- if (index >= stateGraphBases.Count) return;
- if (stateGraphRuning)
- {
- stateGraphBases[currentStateGraphID].stateGraph.OnStateExit -= FinishedStateGraph;
- }
- stateGraphRuning = true;
- Debug.Log("进入流程图:" + stateGraphBases[index].description);
- stateGraphBases[index].stateGraph.InitState();
- stateGraphBases[index].stateGraph.EnterStateGraph();
- stateGraphBases[index].stateGraph.OnStateExit += FinishedStateGraph;
- }
- public void EnterStateGraphByStateGraph(StateGraphBase stateGraphBase)
- {
- if (stateGraphRuning)
- {
- stateGraphBases[currentStateGraphID].stateGraph.OnStateExit -= FinishedStateGraph;
- }
- stateGraphRuning = true;
- Debug.Log("进入流程图:" + stateGraphBase.description);
- stateGraphBase.stateGraph.InitState();
- stateGraphBase.stateGraph.EnterStateGraph();
- stateGraphBase.stateGraph.OnStateExit += FinishedStateGraph;
- }
- public void FinishedStateGraph(StateGraph stateGraph)
- {
- stateGraphRuning = false;
- //获取未完成步骤描述
- string info = stateGraph.GetUnFinishedDescription();
- //ExamManager.Instance.SubExamInfo(stateGraph);
- stateGraphBases[currentStateGraphID].stateGraph.OnStateExit -= FinishedStateGraph;
- Debug.Log("完成流程图:" + stateGraphBases[currentStateGraphID].description);
- //是否依次执行
- if (!orderRunGraph) return;
- currentStateGraphID++;
- if (currentStateGraphID <= stateGraphBases.Count)
- {
- EnterStateGraphByIndex(currentStateGraphID);
- }
- else
- {
- Debug.Log("完成所有流程图列表");
- }
- }
- public void EnterTargetGraphBase(StateGraphBase stateGraphBase)
- {
- //ProcessManagement.Instance.InitStepState(false);
- //ProcedureManager.Instance.JumpStep(stateGraphBase.startInitStep, false);
- EnterStateGraphByStateGraph(stateGraphBase);
- }
- #endregion
- }
|