Пример #1
0
        /// <summary>Execute the graph in the given blackboard.</summary>
        public override AIGraphResult Run(AIBlackboard blackboard)
        {
            // Save blackboard while executing.
            _blackboard = blackboard;
            // Get current state from blackboard.
            object state;

            if (!_blackboard.variables.TryGetValue("CurrentState" + GetInstanceID(), out state))
            {
                return(null);
            }
            // Execute state.
            FSMStateNode currentState = state as FSMStateNode;

            currentState.Run();
            // Get transition if any.
            FSMStateNode newState = currentState.GetTransition();

            if (newState != null)
            {
                currentState.Exit();
                _blackboard.variables["CurrentState" + GetInstanceID()] = newState;
                newState.Enter();
            }

            // Nullify references to the blackboard.
            _blackboard = null;
            return(null);
        }
Пример #2
0
 /// <summary>Init the graph in the given blackboard.</summary>
 public override void Init(AIBlackboard blackboard)
 {
     // Save blackboard while executing.
     _blackboard = blackboard;
     _blackboard.variables["CurrentState" + GetInstanceID()] = _entryState;
     // Trigger enter on root.
     _entryState.Enter();
 }