Beispiel #1
0
    private void InitializeControlCenter(GameObject self, BehaviourStrategy defaultStrategy)
    {
        StrategyManager = new StrategyManager(defaultStrategy)
        {
            EnableBehaviourSwitcing  = false,
            EnableMultipleStrategies = false
        };

        ArbitrationManager = new ArbitrationManager
        {
            EnableArbitrationRules = false,
        };

        CommunicationManager = new CommunicationManager(self)
        {
            EnableBroadcasting = false
        };
    }
Beispiel #2
0
 /* This method will be called before Update, FixedUpdate and LateUpdate
  * This makes sure that the first method which gets called each frame (which can vary)
  * forces the controlcenter to calculate which behaviour(s) to execute exactly one time
  * each frame
  */
 public void PreExecuteCalculations()
 {
     if (lastArbitratedFrame != Time.frameCount)
     {
         strategyToUse = StrategyManager.GetStrategy();                               // Get the strategy to use
         toExecute     = ArbitrationManager.Arbitrate(strategyToUse.GetBehaviours()); // Get the behaviour(s) to execute
         if (CommunicationManager.EnableBroadcasting)
         {
             AgentBehaviour broadcastedBehaviourToDo = CommunicationManager.GetBehaviourToDo(toExecute);
             if (broadcastedBehaviourToDo != null)
             {
                 toExecute.Clear();
                 toExecute.Add(broadcastedBehaviourToDo);
             }
         }
         SuppressBehaviours();
         lastArbitratedFrame = Time.frameCount;
     }
 }