コード例 #1
0
        public void ExecuteTask(IAiTask task, int slot)
        {
            task.StartExecute();
            ActiveTasksBySlot[slot] = task;

            //entity.World.FrameProfiler.Mark("entity-ai-tasks-start-exec" + task.GetType());
        }
コード例 #2
0
        internal void Notify(string key, object data)
        {
            for (int i = 0; i < tasks.Count; i++)
            {
                IAiTask task = tasks[i];

                if (task.Notify(key, data))
                {
                    int slot = tasks[i].Slot;

                    if ((activeTasksBySlot[slot] == null || task.Priority > activeTasksBySlot[slot].PriorityForCancel))
                    {
                        if (activeTasksBySlot[slot] != null)
                        {
                            activeTasksBySlot[slot].FinishExecute(true);
                        }

                        activeTasksBySlot[slot] = task;
                        task.StartExecute();
                        Console.WriteLine("start " + task.ProfilerName);
                        OnTaskStarted?.Invoke(task);
                    }
                }
            }
        }
コード例 #3
0
        public void ExecuteTask(IAiTask task, int slot)
        {
            task.StartExecute();
            activeTasksBySlot[slot] = task;

            if (entity.World.FrameProfiler.Enabled)
            {
                entity.World.FrameProfiler.Mark("task-startexecute-" + AiTaskRegistry.TaskCodes[task.GetType()]);
            }
        }
コード例 #4
0
        internal void Notify(string key, object data)
        {
            for (int i = 0; i < Tasks.Count; i++)
            {
                IAiTask task = Tasks[i];

                if (task.Notify(key, data))
                {
                    int slot = Tasks[i].Slot;

                    if ((ActiveTasksBySlot[slot] == null || task.Priority > ActiveTasksBySlot[slot].PriorityForCancel))
                    {
                        if (ActiveTasksBySlot[slot] != null)
                        {
                            ActiveTasksBySlot[slot].FinishExecute(true);
                        }

                        ActiveTasksBySlot[slot] = task;
                        task.StartExecute();
                    }
                }
            }
        }
コード例 #5
0
 public void ExecuteTask(IAiTask task, int slot)
 {
     task.StartExecute();
     ActiveTasksBySlot[slot] = task;
 }