49 std::vector<ITreeNode *> result;
54 std::vector<Node *> nodes =
behavior_tree_->FindNodesByType(convertedType);
56 result.reserve(nodes.size());
57 std::transform(nodes.begin(), nodes.end(), std::back_inserter(result),
58 [
this](
Node *node) { return GetOrCreateNodeAdapter(node); });
96 std::vector<ITreeNode *> result;
102 std::vector<const ITreeNode *> result;
163 auto adapter = std::make_unique<NodeAdapter>(node);
168 return it->second.get();
void PrintTree() const override
std::shared_ptr< BehaviorTree > behavior_tree_
EmberCore::String GetTreeStructure() const override
void TraverseNodes(std::function< void(ITreeNode *)> visitor) override
std::vector< ITreeNode * > FindNodesByType(ITreeNode::NodeType type) const override
ITreeNode * GetRootNode() const override
ITreeNode * FindNodeByName(const EmberCore::String &name) const override
DirectTreeAdapter(std::shared_ptr< BehaviorTree > tree)
Constructor that wraps a BehaviorTree.
NodeAdapter * GetOrCreateNodeAdapter(Node *node) const
ITreeNode::NodeType ConvertNodeType(Node::Type type) const
void EnsureRootAdapter() const
const EmberCore::String & GetName() const override
const EmberCore::String & GetDescription() const override
std::unique_ptr< NodeAdapter > root_adapter_
bool HasCycles() const override
std::unordered_map< Node *, std::unique_ptr< NodeAdapter > > node_adapter_cache_
ITreeNode * FindNodeById(size_t id) const override
bool IsValid() const override
size_t GetMaxDepth() const override
std::vector< ITreeNode * > GetAllNodes() override
size_t GetNodeCount() const override
Abstract interface for tree nodes that can be visualized.
NodeType
Node types for visualization categorization.
Adapter class that wraps the current Node implementation to work with ITreeNode interface.
Represents a node in a behavior tree structure.
Type
Node types for behavior tree classification.
Main types header for EmberCore.
std::string String
Framework-agnostic string type.