Example #1
0
    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;
 }