38 #ifndef __CU_BEHAVIOR_NODE_H__
39 #define __CU_BEHAVIOR_NODE_H__
40 #include <cugl/ai/behavior/CUBehaviorAction.h>
48 #pragma mark Behavior Node Defintion
186 std::vector<std::shared_ptr<BehaviorNodeDef>>
children;
193 std::shared_ptr<BehaviorActionDef>
action;
213 static std::shared_ptr<BehaviorNodeDef>
alloc() {
214 return std::make_shared<BehaviorNodeDef>();
231 std::shared_ptr<BehaviorNodeDef>
getNodeByName(
const std::string& name);
255 #pragma mark Behavior Node
330 #pragma mark Constructors
354 bool init(
const std::string& name);
365 #pragma mark Attributes
440 virtual std::string
toString(
bool verbose =
false)
const;
445 operator std::string()
const {
return toString(); }
447 #pragma mark Tree Access
500 std::vector<const BehaviorNode*>
getChildren()
const;
528 template <
typename T>
530 return dynamic_cast<const T*
>(
getChild(pos));
589 template <
typename T>
612 template <
typename T>
617 #pragma mark Behavior Management
625 virtual void reset();
634 virtual void pause();
657 virtual void start();
673 virtual void query(
float dt) = 0;
706 std::shared_ptr<BehaviorNode>
removeChild(Uint32 pos);
713 void addChild(
const std::shared_ptr<BehaviorNode> child);
727 const std::shared_ptr<BehaviorNode>& b);
Definition: CUBehaviorNode.h:280
Definition: CUBehaviorNode.h:57
std::shared_ptr< BehaviorNodeDef > getNodeByName(const std::string &name)
virtual void query(float dt)=0
BehaviorNode::State _state
Definition: CUBehaviorNode.h:312
State
Definition: CUBehaviorNode.h:290
std::function< float()> prioritizer
Definition: CUBehaviorNode.h:125
const BehaviorNode * getParent() const
Definition: CUBehaviorNode.h:456
bool uniform
Definition: CUBehaviorNode.h:161
const BehaviorNode * getChild(Uint32 pos) const
std::vector< std::shared_ptr< BehaviorNodeDef > > children
Definition: CUBehaviorNode.h:186
virtual void setState(BehaviorNode::State state)
void setParent(BehaviorNode *parent)
Definition: CUBehaviorNode.h:466
int getParentalOffset() const
Definition: CUBehaviorNode.h:482
BehaviorNode * _parent
Definition: CUBehaviorNode.h:309
std::shared_ptr< BehaviorNode > removeChild(Uint32 pos)
virtual BehaviorNode::State update(float dt)=0
float delay
Definition: CUBehaviorNode.h:177
std::shared_ptr< BehaviorNodeDef > getNodeByName(const char *name)
Definition: CUBehaviorNode.h:247
void addChild(const std::shared_ptr< BehaviorNode > child)
bool preemptive
Definition: CUBehaviorNode.h:150
virtual std::string toString(bool verbose=false) const
BehaviorNode::State getState() const
Definition: CUBehaviorNode.h:395
std::vector< std::shared_ptr< BehaviorNode > > _children
Definition: CUBehaviorNode.h:321
std::string _name
Definition: CUBehaviorNode.h:303
const BehaviorNode * getNodeByName(const char *name) const
Definition: CUBehaviorNode.h:567
Type
Definition: CUBehaviorNode.h:69
Type type
Definition: CUBehaviorNode.h:114
const T * getChild(Uint32 pos) const
Definition: CUBehaviorNode.h:529
int _activeChild
Definition: CUBehaviorNode.h:324
void setPrioritizer(const std::function< float()> &func)
Definition: CUBehaviorNode.h:426
const T * getNodeByName(const char *name) const
Definition: CUBehaviorNode.h:613
std::shared_ptr< BehaviorActionDef > action
Definition: CUBehaviorNode.h:193
std::string _classname
Definition: CUBehaviorNode.h:306
float getPriority() const
Definition: CUBehaviorNode.h:386
const std::string & getName() const
Definition: CUBehaviorNode.h:374
std::vector< const BehaviorNode * > getChildren() const
const T * getNodeByName(const std::string &name) const
Definition: CUBehaviorNode.h:590
void setPriority(float priority)
bool background
Definition: CUBehaviorNode.h:137
bool init(const std::string &name)
void removeFromParent()
Definition: CUBehaviorNode.h:473
std::function< float()> getPrioritizer() const
Definition: CUBehaviorNode.h:415
std::string name
Definition: CUBehaviorNode.h:111
const BehaviorNode * getNodeByName(const std::string &name) const
Definition: CUAction.h:51
float _priority
Definition: CUBehaviorNode.h:315
std::function< float()> _prioritizer
Definition: CUBehaviorNode.h:318
size_t getChildCount() const
Definition: CUBehaviorNode.h:489
int _childOffset
Definition: CUBehaviorNode.h:327
static std::shared_ptr< BehaviorNodeDef > alloc()
Definition: CUBehaviorNode.h:213
~BehaviorNode()
Definition: CUBehaviorNode.h:342
static bool compareSiblings(const std::shared_ptr< BehaviorNode > &a, const std::shared_ptr< BehaviorNode > &b)