behavior3行为树
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 

64 lignes
1.6 KiB

-ifndef(behavior3_h).
-define(behavior3_h, true).
-export_type([bt_uid/0, bt_status/0, bt_node_id/0, bt_state/0, properties/0, uninit_bt_node/0, tree_nodes/0, btree/0, bt_node/0]).
-type bt_uid() :: reference().
-define(BT_SUCCESS, 1).
-define(BT_FAILURE, 2).
-define(BT_RUNNING, 3).
-define(BT_ERROR, 4).
-type bt_status() :: ?BT_SUCCESS|?BT_FAILURE|?BT_RUNNING|?BT_ERROR.
-type bt_node_id() :: string().
-type bt_state() :: #{
'$global_maps' => map(),
'$local_maps' => map(),
term() => term()
}.
-type properties() :: #{atom() => term()}.
%% 未初始化的树节点
-type uninit_bt_node() :: #{
id => bt_node_id(),
name => atom() | bt_node_id(),
category => atom(),
properties => properties(),
children => [bt_node_id()]
}.
-type tree_nodes() :: #{bt_node_id() => uninit_bt_node()}.
%% 行为树
-type btree() :: #{
id => bt_node_id(),
root => bt_node_id(),
properties => properties(),
tree_nodes => tree_nodes()
}.
%% 行为树节点
-type bt_node() :: #{
id := bt_uid(),
bt_node_id := bt_node_id(),
parent_id := bt_uid(),
name := atom(),
category := atom(),
properties := properties(),
children := [bt_uid()]
}.
-define(BI_MOD_LIST, [
error, failer, runner, succeeder, wait,
mem_priority, mem_sequence, priority, sequence,
inverter, limiter, max_time, repeat_until_failure, repeat_until_success, repeater
]).
-define(BT_LOG(Format), io:format("~w:~w:~w [debug] ~p: " ++ Format ++ "~n", tuple_to_list(time()) ++ [?MODULE])).
-define(BT_LOG(Format, Args), io:format("~w:~w:~w [debug] ~p: " ++ Format ++ "~n", tuple_to_list(time()) ++ [?MODULE | Args])).
-endif.