状态机组件. 更多...
#include <FSM.h>
Public 成员函数 | |
| template<class T > | |
| T * | AddStatus (std::string name, std::string parent="root") |
| 添加节点状态 | |
| void | RemoveStatus (std::string name, bool delchild=1) |
| 移除节点状态 | |
| FSMItems * | GetNormalStatus () |
| 得到当前执行的状态节点. | |
| std::string | GetLastStatus () |
| 得到上一次执行的状态名. | |
| std::string | getNameStatus (FSMItems *item) |
| 获取状态节点名字. | |
| FSMItems * | FindStatusByName (std::string name) |
| 由名字查找状态节点. | |
| virtual void | BeginPlay () |
| 加载一些参数. | |
| std::list< FSMItems * > | GetPath (FSMItems *item) |
| 获取节点路径. | |
| void | TransitionState (std::string name) |
| 切换状态. | |
| void | Init () |
| 初始化. | |
| void | Destruct () |
| 销毁状态机. | |
| void | Awake () |
| 唤醒状态树. | |
| FSM () | |
| 构造函数. | |
| ~FSM () | |
| 析构函数 销毁所有节点回收资源. | |
Public 成员函数 继承自 Component | |
| virtual void | EndPlay () |
| 把一些不能写在析构函数的一些操作写在这里 | |
| void | SetOwner (class Object *owner) |
| 设置绑定对象. | |
| virtual void | Activate () |
| 激活组件 | |
| virtual void | Deactivate () |
| 停用组件 | |
| Object * | GetOwner () const |
| 获取绑定对象指针 | |
Public 成员函数 继承自 base | |
| base () | |
| virtual | ~base () |
| std::string | GetName () const |
| void | SetName (const std::string &name) |
Private 成员函数 | |
| void | RegisterStatus (std::string name, FSMItems *item) |
| 注册状态在状态机. | |
| void | process_Update (FSMItems *item) |
| 递归从上到下执行行为. | |
| void | process_Enter (FSMItems *item, FSMItems *end=nullptr) |
| 递归从上到下执行进入事件. | |
| void | process_Exit (FSMItems *item, FSMItems *end=nullptr) |
| 递归从下到上执行退出事件. | |
| virtual void | Update (float deltaTime) |
| 每一帧执行行为. | |
| void | Clear (std::string name) |
| 清空某个节点子状态(也包括当前节点). | |
| void | UnregisterStatus (std::string name) |
| 取消注册状态在状态机. | |
| void | UnregisterStatus (FSMItems *item) |
| 取消注册状态在状态机. | |
| FSMItems * | lowestCommonAncestor (FSMItems *root, FSMItems *p, FSMItems *q) |
| 寻找最近公共祖先. | |
Private 属性 | |
| std::unordered_map< std::string, FSMItems * > | status |
| 节点映射 [名字,状态节点] 用名称访问节点. | |
| FSMItems * | root |
| 根节点 | |
| FSMItems * | normalstatus =nullptr |
| 现在状态节点 | |
| std::string | laststatus = "null" |
| 前一状态 | |
| FSM_Info | fsm_info |
| 需要的参数. | |
额外继承的成员函数 | |
Protected 属性 继承自 Component | |
| class Object * | pOwner = nullptr |
| 处理控制逻辑 有对象物体的指针才能进行控制 | |
| bool | bIsEnabled = true |
| 是否激活 | |
状态机组件.
执行状态的管理
|
inline |
构造函数.
主要就是创建根节点
|
inline |
析构函数 销毁所有节点回收资源.
|
inline |
添加节点状态
默认状态并行.
| [in] | name | 状态节点名字 |
| [in] | parent | 父节点 |
|
inline |
唤醒状态树.
组件用不到
|
inlinevirtual |
|
private |
清空某个节点子状态(也包括当前节点).
| [in] | name | 状态节点名 |
|
virtual |
销毁状态机.
重载 Component .
|
inline |
由名字查找状态节点.
| [in] | name | 状态名字 |
|
inline |
得到上一次执行的状态名.
|
inline |
获取状态节点名字.
| [in] | item | 状态节点 |
|
inline |
得到当前执行的状态节点.
获取节点路径.
用链表满足先进先出
| [in] | item | 状态节点 |
|
inline |
初始化.
主要是为了以后作为一个独立的类需要的函数 实现更加复杂的管理
寻找最近公共祖先.
| [in] | root | 根状态节点 其中的一个公共祖先 |
| [in] | p | 第一个状态节点 |
| [in] | q | 第二个状态节点 |
递归从上到下执行进入事件.
| [in] | item | 执行节点 |
| [in] | end | 从哪个上层节点开始 |
递归从下到上执行退出事件.
| [in] | item | 执行节点 |
| [in] | end | 执行到哪个上层节点为止 |
|
inlineprivate |
递归从上到下执行行为.
| [in] | item | 状态节点 |
|
inlineprivate |
注册状态在状态机.
| [in] | name | 状态名 |
| [in] | item | 状态节点 |
| void FSM::RemoveStatus | ( | std::string | name, |
| bool | delchild = 1 ) |
移除节点状态
默认删除所有子节点状态.
| [in] | name | 状态名 |
| [in] | delchild | 是否删除所有子节点 |
|
inline |
切换状态.
| name | 状态名 |
|
inlineprivate |
取消注册状态在状态机.
| [in] | name | 状态节点 |
|
inlineprivate |
取消注册状态在状态机.
| [in] | name | 状态节点名 |
|
inlineprivatevirtual |
|
private |
需要的参数.
|
private |
前一状态
|
private |
现在状态节点
|
private |
根节点
|
private |
节点映射 [名字,状态节点] 用名称访问节点.