/// <summary>
 /// Allows a reasoning API to be dynamically added to the scene
 /// </summary>
 /// <param name="reasoningAPI"></param>
 public void AddReasoningAPI(IReasoningAPI reasoningAPI)
 {
     m_ReasoningAPISet.Add(reasoningAPI);
     m_FIModule.activeIsland.InjectFunctionalitySingle(reasoningAPI);
     reasoningAPI.Setup();
     this.AddMarsTimeSlowTask(reasoningAPI.ProcessScene, reasoningAPI.processSceneInterval);
 }
 /// <summary>
 /// Allows a reasoning API to change its interval at runtime
 /// </summary>
 /// <param name="reasoningAPI">The reasoning API to update the interval for</param>
 public void ChangeReasoningAPIInterval(IReasoningAPI reasoningAPI)
 {
     // just replace the task with a new one with a new interval
     this.AddMarsTimeSlowTask(reasoningAPI.ProcessScene, reasoningAPI.processSceneInterval, true);
 }
 /// <summary>
 /// Removes a reasoning API from being processed in the scene
 /// </summary>
 public void RemoveReasoningAPI(IReasoningAPI reasoningAPI)
 {
     m_ReasoningAPISet.Remove(reasoningAPI);
     reasoningAPI.TearDown();
     this.RemoveMarsTimeSlowTask(reasoningAPI.ProcessScene);
 }
 public static void ChangeProcessSceneInterval(this IReasoningAPI api)
 {
     ReasoningModule.instance.ChangeReasoningAPIInterval(api);
 }