63 void AddChild(std::unique_ptr<Node> child);
70 std::unique_ptr<Node>
DeepCopy()
const;
113 void Accept(std::function<
void(
Node *)> visitor);
114 void Accept(std::function<
void(
const Node *)> visitor)
const;
136 virtual std::unique_ptr<Node>
CreateCopy()
const;
Factory class for creating different types of nodes.
static std::unique_ptr< Node > CreateConditionNode(const String &name)
static std::unique_ptr< Node > CreateSampleTree()
static std::unique_ptr< Node > CreateNode(const String &name, Node::Type type)
static std::unique_ptr< Node > CreateActionNode(const String &name)
static std::unique_ptr< Node > CreateControlNode(const String &name)
static std::unique_ptr< Node > CreateDecoratorNode(const String &name)
Represents a node in a behavior tree structure.
virtual std::unique_ptr< Node > CreateCopy() const
bool HasAttribute(const String &name) const
void ToggleChildrenVisibility()
Node(const String &name, Type type=Type::None)
String GetStatusString() const
Status
Node status for runtime execution tracking.
std::map< String, String > custom_attributes_
virtual void OnChildAdded(Node *child)
void RemoveChild(size_t index)
void PrintTree(int indent=0) const
void SetName(const String &name)
void SetVisualState(VisualState state)
const std::map< String, String > & GetAllAttributes() const
VisualState
Visual state for UI rendering.
size_t GetSubtreeNodeCount() const
VisualState visual_state_
size_t GetAttributeCount() const
void SetPosition(const Point &position)
std::vector< std::unique_ptr< Node > > children_
void SetChildrenVisible(bool visible)
String GetAttribute(const String &name, const String &default_value="") const
Node * GetChild(size_t index) const
VisualState GetVisualState() const
bool HasCyclesHelper(std::vector< const Node * > &visited) const
String GetTypeString() const
int GetChildrenWidth() const
Type
Node types for behavior tree classification.
virtual void OnChildRemoved(Node *child)
void Accept(std::function< void(Node *)> visitor)
Node(const Node &other)=delete
Node * FindChild(const String &name) const
const String & GetName() const
void SetAttribute(const String &name, const String &value)
void RemoveAttribute(const String &name)
std::vector< Node * > GetAllChildren()
std::unique_ptr< Node > DetachChild(size_t index)
size_t FindChildIndex(Node *child) const
void SetChildrenWidth(int width)
const Point & GetPosition() const
Node * FindChildById(size_t id) const
void AddChild(std::unique_ptr< Node > child)
Node & operator=(const Node &other)=delete
void SetParent(Node *parent)
int CalculateSubtreeWidth(int node_width, int horizontal_spacing) const
bool AreChildrenVisible() const
size_t GetChildCount() const
void SetStatus(Status status)
std::unique_ptr< Node > DeepCopy() const
Main types header for EmberCore.
std::string String
Framework-agnostic string type.
2D point with integer coordinates