コード例 #1
0
        private void LoadStates()
        {
            var states = _builder.GetStates();

            if (states != null)
            {
                _metadata = _builder.GetMetadata <PlainStateMachineBuilderMetadata>(MetadataKey);

                var initialStateId = _builder.GetInitialStateId();

                for (int i = 0; i < states.Length; i++)
                {
                    var current = states[i];

                    for (int j = 0; j < _metadata.StateNodesMetadata.Count; j++)
                    {
                        if (PlainStateMachineBuilderHelper.AreEquals(_metadata.StateNodesMetadata[j].StateId, current.StateId))
                        {
                            AddNodeFrom(states[i], _metadata.StateNodesMetadata[j]);
                            break;
                        }
                    }
                }

                var initialNode = StateNodeOf(initialStateId);

                if (initialNode != null)
                {
                    SetInitialStateNode(initialNode);
                }
            }
        }
コード例 #2
0
 private void RemoveTransitionsRelatedTo(StateNode node)
 {
     for (int i = 0; i < _transitions.Count; i++)
     {
         if (PlainStateMachineBuilderHelper.AreEquals(node.StateId, _transitions[i].StateFrom) ||
             PlainStateMachineBuilderHelper.AreEquals(node.StateId, _transitions[i].StateTo))
         {
             RemoveTransition(_transitions[i]);
         }
     }
 }
コード例 #3
0
        private StateNode GetNodeOf(StateInfo stateInfo)
        {
            for (int i = 0; i < _nodes.Count; i++)
            {
                var current = _nodes[i];

                if (PlainStateMachineBuilderHelper.AreEquals(current.StateId, stateInfo.StateId))
                {
                    return(current);
                }
            }

            return(null);
        }