7 std::shared_ptr<StateManager> state_manager)
35 return m_tree->GetDescription();
42 return m_tree->GetNodeCount();
49 return m_tree->GetMaxDepth();
63 return it->second.get();
83 std::vector<EmberCore::ITreeNode *> result;
111 auto nodes =
m_tree->FindNodesByType(coreType);
112 result.reserve(nodes.size());
114 for (
auto *node : nodes) {
117 result.push_back(adapter);
125 if (!
m_tree || !visitor) {
138 if (!
m_tree || !visitor) {
161 return m_tree->HasCycles();
165 std::vector<EmberCore::ITreeNode *> result;
171 auto nodes =
m_tree->GetAllNodes();
172 result.reserve(nodes.size());
174 for (
auto *node : nodes) {
177 result.push_back(adapter);
185 std::vector<const EmberCore::ITreeNode *> result;
191 auto nodes =
m_tree->GetAllNodes();
192 result.reserve(nodes.size());
194 for (
auto *node : nodes) {
197 result.push_back(adapter);
208 return m_tree->GetTreeStructure();
221 return m_stateManager->GetNodeStatus(
static_cast<int64_t
>(node_id));
230 int64_t
id =
static_cast<int64_t
>(node_id);
232 for (
auto pathId : path) {
253 size_t id = node->
GetId();
257 return it->second.get();
260 auto adapter = std::make_unique<EmberCore::NodeAdapter>(node);
261 auto *ptr = adapter.get();
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.
const EmberCore::String & GetName() const override
size_t GetNodeCount() const override
TCPTreeAdapter(std::shared_ptr< EmberCore::BehaviorTree > tree, std::shared_ptr< StateManager > state_manager)
int64_t GetCurrentTick() const
const EmberCore::String & GetDescription() const override
EmberCore::NodeAdapter * GetOrCreateAdapter(EmberCore::Node *node) const
std::vector< EmberCore::ITreeNode * > GetAllNodes() override
bool IsValid() const override
Protocol::NodeStatus NodeStatus
bool HasCycles() const override
EmberCore::ITreeNode * GetRootNode() const override
EmberCore::ITreeNode * FindNodeById(size_t id) const override
NodeStatus GetNodeStatus(size_t node_id) const
std::shared_ptr< EmberCore::BehaviorTree > m_tree
void TraverseNodes(std::function< void(EmberCore::ITreeNode *)> visitor) override
EmberCore::ITreeNode * FindNodeByName(const EmberCore::String &name) const override
EmberCore::NodeAdapter * m_rootAdapter
size_t GetMaxDepth() const override
std::shared_ptr< StateManager > m_stateManager
EmberCore::String GetTreeStructure() const override
void PrintTree() const override
std::unordered_map< size_t, std::unique_ptr< EmberCore::NodeAdapter > > m_adapters
std::vector< EmberCore::ITreeNode * > FindNodesByType(EmberCore::ITreeNode::NodeType type) const override
bool IsNodeInExecutionPath(size_t node_id) const
void BuildAdapterCache() const
std::string String
Framework-agnostic string type.