@@ -53,15 +53,17 @@ bool BehaviorTreeFactory::unregisterBuilder(const std::string& ID)
5353 return true ;
5454}
5555
56- void BehaviorTreeFactory::registerBuilder (const std::string& ID , NodeBuilder builder)
56+ void BehaviorTreeFactory::registerBuilder (const TreeNodeManifest& manifest , NodeBuilder builder)
5757{
58- auto it = builders_.find (ID );
58+ auto it = builders_.find ( manifest. registration_ID );
5959 if (it != builders_.end ())
6060 {
61- throw BehaviorTreeException (" ID '" + ID + " ' already registered" );
61+ throw BehaviorTreeException (" ID '" + manifest. registration_ID + " ' already registered" );
6262 }
6363
64- builders_.insert (std::make_pair (ID, builder));
64+ builders_.insert (std::make_pair (manifest.registration_ID , builder));
65+ manifests_.push_back (manifest);
66+ sortTreeNodeManifests ();
6567}
6668
6769void BehaviorTreeFactory::registerSimpleCondition (
@@ -71,8 +73,8 @@ void BehaviorTreeFactory::registerSimpleCondition(
7173 return std::unique_ptr<TreeNode>(new SimpleConditionNode (name, tick_functor, params));
7274 };
7375
74- registerBuilder ( ID, builder) ;
75- storeNodeManifest<SimpleConditionNode>(ID );
76+ TreeNodeManifest manifest = { NodeType::CONDITION, ID, NodeParameters () } ;
77+ registerBuilder (manifest, builder );
7678}
7779
7880void BehaviorTreeFactory::registerSimpleAction (const std::string& ID,
@@ -82,8 +84,8 @@ void BehaviorTreeFactory::registerSimpleAction(const std::string& ID,
8284 return std::unique_ptr<TreeNode>(new SimpleActionNode (name, tick_functor, params));
8385 };
8486
85- registerBuilder ( ID, builder) ;
86- storeNodeManifest<SimpleActionNode>(ID );
87+ TreeNodeManifest manifest = { NodeType::ACTION, ID, NodeParameters () } ;
88+ registerBuilder (manifest, builder );
8789}
8890
8991void BehaviorTreeFactory::registerSimpleDecorator (
@@ -93,8 +95,8 @@ void BehaviorTreeFactory::registerSimpleDecorator(
9395 return std::unique_ptr<TreeNode>(new SimpleDecoratorNode (name, tick_functor, params));
9496 };
9597
96- registerBuilder ( ID, builder) ;
97- storeNodeManifest<SimpleDecoratorNode>(ID );
98+ TreeNodeManifest manifest = { NodeType::DECORATOR, ID, NodeParameters () } ;
99+ registerBuilder (manifest, builder );
98100}
99101
100102void BehaviorTreeFactory::registerFromPlugin (const std::string file_path)
0 commit comments