/// <summary> 构造函数 </summary> public MainFsm(Type typeBool, Type tyFloat) { triggerSet = new HashSet <Enum>(); boolDict = new Dictionary <Enum, bool>(); floatDict = new Dictionary <Enum, float>(); tempTriggerList = new List <Enum>(); anyState = new AnyState(this); intoState = new IntoState(this, this); _currentNode = intoState; // --------------------------------- // 通过反射初始化FLoat和Bool对应的字典 var boolFields = typeBool.GetFields(BindingFlags.Static | BindingFlags.Public); foreach (var item in boolFields) { boolDict.Add((EBoolCondition)item.GetValue(null), false); } var floatFields = tyFloat.GetFields(BindingFlags.Static | BindingFlags.Public); foreach (var item in floatFields) { floatDict.Add((EFloatCondition)item.GetValue(null), 0); } }
// ---------------------- /// <summary> 构造函数 供anystate调用 </summary> public StateTransition(AnyState anyState, IFsmNode to, MainFsm mainFsm, FsmBase fsmBelongTo = null) { if (anyState == null) { return; } if (from == to) { //Todo Error return; } this._mainFsm = mainFsm; this.fsmBelongTo = fsmBelongTo ?? mainFsm; this.from = null; this.to = to; _conditionSet = new HashSet <Func <bool> >(); anyState.AddTransition(this); }