using System.Collections; using System.Collections.Generic; using UnityEngine; using XNode; using System; using Sirenix.OdinInspector; using System.Linq; using ChivaXR; namespace ChivaVR.State { public class ConditionStateNode : StateNode { [Output, HideInInspector] public Empty exit; [ValueDropdown("GetProcedure", IsUniqueList = true)] [OnValueChanged("ResetCurrentProcedure")] [HideLabel] public int currentProcedureStepID; private static IEnumerable GetProcedure() { return ProcessManagement.Instance.processes.Select(x => new ValueDropdownItem(x.processBase.GetPBDescribe(), x.stepID)); } private ProcessElement currentProcedure; public ProcessElement CurrentProcedure { get { if (currentProcedure == null) { currentProcedure = GetCurrentProcedure(); } return currentProcedure; } } public void ResetCurrentProcedure() { currentProcedure = GetCurrentProcedure(); } /// /// 获取当前流程 /// /// public ProcessElement GetCurrentProcedure() { if (currentProcedureStepID == 0) return null; return ProcessManagement.Instance.processes.Where(x => (x.stepID.Equals(currentProcedureStepID))).First(); } public override bool IsRuning { get => base.IsRuning; set => base.IsRuning = value; } public override bool IsFinished { get { if (CurrentProcedure != null) { return CurrentProcedure.finished; } return false; ; } } } }