public override bool decompose(BehaviorNode node, PlannerTaskComplex seqTask, int depth, Planner planner) { ReferencedBehavior taskSubTree = (ReferencedBehavior)node; bool bOk = false; Debug.Check(taskSubTree != null); int depth2 = planner.GetAgent().Variables.Depth; using (AgentState currentState = planner.GetAgent().Variables.Push(false)) { //planner.agent.Variables.Log(planner.agent, true); taskSubTree.SetTaskParams(planner.GetAgent()); Task task = taskSubTree.RootTaskNode; if (task != null) { planner.LogPlanReferenceTreeEnter(planner.GetAgent(), taskSubTree); task.Parent.InstantiatePars(planner.GetAgent()); PlannerTask childTask = planner.decomposeNode(task, depth); if (childTask != null) { seqTask.AddChild(childTask); bOk = true; } task.Parent.UnInstantiatePars(planner.GetAgent()); planner.LogPlanReferenceTreeExit(planner.GetAgent(), taskSubTree); Debug.Check(true); } } Debug.Check(planner.GetAgent().Variables.Depth == depth2); return(bOk); }
public void LogPlanReferenceTreeExit(Agent a, ReferencedBehavior referencedNode) { #if !BEHAVIAC_RELEASE if (Config.IsLoggingOrSocketing) { string ni = BehaviorTask.GetTickInfo(a, referencedNode, null); LogManager.Instance.Log("[plan_referencetree_exit]{0} {1}.xml\n", ni, referencedNode.ReferencedTree); } #endif }