void DoUpdate(Blackboard request) { BTLogger.Enabled = logFrames; BTLogger.BeginFrame(rootNode); _snapshot = _blackboard.ApplyChanges(request).WithNewOrder(); _frameResult = rootNode.Update(_snapshot); _blackboard.ExecuteOrder(_snapshot.order); ExecuteOrder(_snapshot.order); BTLogger.EndFrame(rootNode); }
public bool IsMatch(Blackboard snapshot) { var ret = precondition == null || precondition.IsMatch(snapshot); BTLogger.Log(this, "IsMatch {0}? {1}", precondition, ret.Pretty()); // exit running node if precondition is not valid anymore if (!ret) { SetState(NodeState.Finished, snapshot); } return(ret); }
static BTLogger FindLogger(Node node) { BTLogger logger; if (!mapNodeLoggers.TryGetValue(node, out logger)) { if (node.parent != null) { logger = FindLogger(node.parent); } if (logger == null) { logger = new BTLogger(); mapNodeLoggers[node] = logger; } } return(logger); }