//----------------------------------------------------------------------------------------------- private void DrawAgent(Agent agent, int agentIndex) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField(agent.gameObject.name); EditorGUILayout.LabelField("Next Task Index: " + agent.CurrentPlanIndex); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField(""); // Task info EditorGUILayout.BeginVertical(); { PlanRunner agentPlanRunner = agent.ActivePlanRunner; Plan agentPlan = agentPlanRunner.PlanToExecute; if (agentPlan != null && agentPlan.TaskList.Count != 0) { int planRunnerIndex = agentPlanRunner.CurrentPlanIndex; for (int taskIndex = 0; taskIndex < agentPlan.TaskList.Count; ++taskIndex) { PrimitiveTask task = agentPlan.TaskList[taskIndex]; if (taskIndex == planRunnerIndex) { EditorGUILayout.LabelField("(Next) " + (taskIndex + 1) + ". " + task.Name); } else { EditorGUILayout.LabelField((taskIndex + 1) + ". " + task.Name); } } } else { EditorGUILayout.LabelField("(Needs plan)"); } EditorGUILayout.LabelField(""); } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); } }
/// <summary> /// Start時に1度だけ呼ばれる /// </summary> protected virtual void OnStart() { planRunner = new PlanRunner(this, rootTask); planRunner.UpdatePlan(worldState); }