behavior3行为树
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 

74 linhas
1.6 KiB

-ifndef(__eBhv3_H__).
-define(__eBhv3_H__, 1).
-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.