-module(bt_helper). -include("./bt_node_behaviours/bt_nodes.hrl"). -export([ make_task/3, make_decorator/3, decorate/2 ]). make_task(Module, Args, Name) -> #task{ name = Name, module = Module, args = Args }. %% child will be set later using bt_helper:decorate make_decorator(Module, Args, Name) -> #decorator{ name = Name, module = Module, args = Args }. %% single decorator passed decorate(Node, Decorator) when is_record(Decorator, decorator) -> decorate(Node, [Decorator]); decorate(Node, []) -> Node; decorate(Node, [Decorator | RestOfDecorators]) when is_record(Decorator, decorator) -> DecoratedOnce = Decorator#decorator{ child = Node }, decorate(DecoratedOnce, RestOfDecorators).