void CollectPlaymakerInfos() { FsmState[] _states = fsmObj.FsmStates; int num = _states.Length; stateMsgs = new FSMStateContainer[num]; fsmDict = new Dictionary <string, int> (); // add states into dictionaries // for knowing the state indexes for (int i = 0; i < num; i++) { fsmDict.Add(_states [i].Name, i); } for (int i = 0; i < num; i++) { stateMsgs [i] = new FSMStateContainer(); stateMsgs [i].stateId = i; // knowing itself's id, use for linking stateMsgs [i].name = _states [i].Name; stateMsgs [i].description = _states [i].Description; stateMsgs [i].position = _states [i].Position; // put in transition datas if (_states [i].Transitions.Length > 0) { int transitionNum = _states [i].Transitions.Length; string[] tNames = new string[transitionNum]; int[] tTargets = new int[transitionNum]; for (int j = 0; j < transitionNum; j++) { tNames [j] = _states [i].Transitions [j].EventName; tTargets [j] = fsmDict [_states [i].Transitions [j].ToState]; } stateMsgs [i].transitionNames = tNames; stateMsgs [i].transitionTargets = tTargets; } } lastStateName = fsmObj.ActiveStateName; }
public FsmDataMessage(FSMStateContainer fsmStateData) { stateData = fsmStateData; }