ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::nbt_factory< TACTOR > Class Template Reference

行为树工厂类。 More...

#include <nbt.h>

Public Member Functions

 nbt_factory ()
 构造函数。
 nbt_factory (const nbt_factory &)=delete
 禁止拷贝构造
nbt_factoryoperator= (const nbt_factory &)=delete
 禁止赋值操作
BT::BehaviorTreeFactory & native ()
 获取底层行为树工厂。
void register_action (const std::string &aname, nbt_node_callback< TACTOR > afun, const BT::PortsList &aports={})
 注册同步动作节点。
void register_stateful_action (const std::string &aname, nbt_node_callback< TACTOR > afun, const BT::PortsList &aports={})
 注册有状态动作节点(可能返回RUNNING)。
void register_condition (const std::string &aname, nbt_node_callback< TACTOR > afun, const BT::PortsList &aports={})
 注册条件节点。
void register_decorator (const std::string &aname, nbt_decorator_callback< TACTOR > afun, const BT::PortsList &aports={})
 注册装饰器节点(单个子节点,转换/门控子节点结果)。
void register_control (const std::string &aname, nbt_node_callback< TACTOR > afun, const BT::PortsList &aports={})
 注册控制节点(多个子节点,确定tick顺序和流程)。
void register_coro_action (const std::string &aname, nbt_node_callback< TACTOR > afun, const BT::PortsList &aports={})
 注册协程动作节点(可通过setStatusRunningAndYield()让出执行)。
void register_threaded_action (const std::string &aname, nbt_node_callback< TACTOR > afun, const BT::PortsList &aports={})
 注册线程化动作节点(在单独线程上运行tick())。
void register_tree (const std::string &axml)
 从XML字符串注册行为树。
void register_tree_file (const std::string &apath)
 从XML文件注册行为树。
std::unique_ptr< BT::Tree > create (const std::string &aid, BT::Blackboard::Ptr ablackboard)
 创建行为树实例。
std::unique_ptr< BT::Tree > create_xml (const std::string &axml, BT::Blackboard::Ptr ablackboard)
 从XML字符串创建行为树实例。

Static Public Member Functions

static nbt_factory< TACTOR > & instance ()
 获取单例实例。

Detailed Description

template<typename TACTOR>
class ngl::nbt_factory< TACTOR >

行为树工厂类。

共享的行为树工厂(每个Actor类型一个单例)。 节点类型在启动时注册一次;所有Actor实例共享同一个工厂。

Template Parameters
TACTORActor类型
Note
使用单例模式,通过instance()方法获取实例。
禁止拷贝构造和赋值操作。

Constructor & Destructor Documentation

◆ nbt_factory()

template<typename TACTOR>
ngl::nbt_factory< TACTOR >::nbt_factory ( )
inline

构造函数。

初始化行为树工厂实例。

Member Function Documentation

◆ create()

template<typename TACTOR>
std::unique_ptr< BT::Tree > ngl::nbt_factory< TACTOR >::create ( const std::string & aid,
BT::Blackboard::Ptr ablackboard )
inline

创建行为树实例。

Parameters
aid行为树ID
ablackboard黑板指针
Returns
行为树实例

◆ create_xml()

template<typename TACTOR>
std::unique_ptr< BT::Tree > ngl::nbt_factory< TACTOR >::create_xml ( const std::string & axml,
BT::Blackboard::Ptr ablackboard )
inline

从XML字符串创建行为树实例。

Parameters
axmlXML字符串
ablackboard黑板指针
Returns
行为树实例

◆ instance()

template<typename TACTOR>
nbt_factory< TACTOR > & ngl::nbt_factory< TACTOR >::instance ( )
inlinestatic

获取单例实例。

Returns
nbt_factory单例实例的引用

◆ native()

template<typename TACTOR>
BT::BehaviorTreeFactory & ngl::nbt_factory< TACTOR >::native ( )
inline

获取底层行为树工厂。

Returns
BT::BehaviorTreeFactory引用

◆ register_action()

template<typename TACTOR>
void ngl::nbt_factory< TACTOR >::register_action ( const std::string & aname,
nbt_node_callback< TACTOR > afun,
const BT::PortsList & aports = {} )

注册同步动作节点。

注册同步动作节点的模板实现。

Parameters
aname节点名称
afun节点回调函数
aports端口列表,默认为空

创建一个NodeBuilder lambda,将用户回调包装到nbt_action_node中, 然后通过工厂的registerBuilder()注册节点。

Template Parameters
TACTORActor类型
Parameters
aname节点名称
afun节点回调函数
aports端口列表

◆ register_condition()

template<typename TACTOR>
void ngl::nbt_factory< TACTOR >::register_condition ( const std::string & aname,
nbt_node_callback< TACTOR > afun,
const BT::PortsList & aports = {} )

注册条件节点。

注册条件节点的模板实现。

Parameters
aname节点名称
afun节点回调函数
aports端口列表,默认为空
Template Parameters
TACTORActor类型
Parameters
aname节点名称
afun条件回调函数
aports端口列表

◆ register_control()

template<typename TACTOR>
void ngl::nbt_factory< TACTOR >::register_control ( const std::string & aname,
nbt_node_callback< TACTOR > afun,
const BT::PortsList & aports = {} )

注册控制节点(多个子节点,确定tick顺序和流程)。

注册控制节点的模板实现。

Parameters
aname节点名称
afun节点回调函数
aports端口列表,默认为空
Template Parameters
TACTORActor类型
Parameters
aname节点名称
afun控制节点回调函数
aports端口列表

◆ register_coro_action()

template<typename TACTOR>
void ngl::nbt_factory< TACTOR >::register_coro_action ( const std::string & aname,
nbt_node_callback< TACTOR > afun,
const BT::PortsList & aports = {} )

注册协程动作节点(可通过setStatusRunningAndYield()让出执行)。

注册协程动作节点的模板实现。

Parameters
aname节点名称
afun节点回调函数
aports端口列表,默认为空
Template Parameters
TACTORActor类型
Parameters
aname节点名称
afun协程回调函数
aports端口列表

◆ register_decorator()

template<typename TACTOR>
void ngl::nbt_factory< TACTOR >::register_decorator ( const std::string & aname,
nbt_decorator_callback< TACTOR > afun,
const BT::PortsList & aports = {} )

注册装饰器节点(单个子节点,转换/门控子节点结果)。

注册装饰器节点的模板实现。

Parameters
aname节点名称
afun节点回调函数
aports端口列表,默认为空
Template Parameters
TACTORActor类型
Parameters
aname节点名称
afun装饰器回调函数(接收子节点结果)
aports端口列表

◆ register_stateful_action()

template<typename TACTOR>
void ngl::nbt_factory< TACTOR >::register_stateful_action ( const std::string & aname,
nbt_node_callback< TACTOR > afun,
const BT::PortsList & aports = {} )

注册有状态动作节点(可能返回RUNNING)。

注册有状态动作节点的模板实现。

Parameters
aname节点名称
afun节点回调函数
aports端口列表,默认为空
Template Parameters
TACTORActor类型
Parameters
aname节点名称
afun节点回调函数
aports端口列表

◆ register_threaded_action()

template<typename TACTOR>
void ngl::nbt_factory< TACTOR >::register_threaded_action ( const std::string & aname,
nbt_node_callback< TACTOR > afun,
const BT::PortsList & aports = {} )

注册线程化动作节点(在单独线程上运行tick())。

注册线程化动作节点的模板实现。

Parameters
aname节点名称
afun节点回调函数
aports端口列表,默认为空
Template Parameters
TACTORActor类型
Parameters
aname节点名称
afun线程化回调函数
aports端口列表

◆ register_tree()

template<typename TACTOR>
void ngl::nbt_factory< TACTOR >::register_tree ( const std::string & axml)
inline

从XML字符串注册行为树。

Parameters
axmlXML字符串

◆ register_tree_file()

template<typename TACTOR>
void ngl::nbt_factory< TACTOR >::register_tree_file ( const std::string & apath)
inline

从XML文件注册行为树。

Parameters
apathXML文件路径

The documentation for this class was generated from the following file: