Skip to main content

mecha10_behavior_runtime/actions/
mod.rs

1//! Built-in action nodes for behavior trees.
2//!
3//! Common action nodes implementing `BehaviorNode`, registrable via `NodeRegistry`.
4
5mod capture_target;
6mod elapsed_timer;
7mod flight;
8mod go_to_location;
9mod instance_track_task;
10mod movement;
11mod navigation;
12mod rl_task;
13mod sensing;
14mod set_go_to_location_target;
15mod set_instance_track_target;
16mod set_rl_target;
17mod timing;
18
19pub use capture_target::CaptureTargetNode;
20pub use flight::{LandNode, TakeoffNode};
21pub use go_to_location::GoToLocationNode;
22pub use instance_track_task::InstanceTrackTaskNode;
23pub use movement::{MoveNode, StopNode, WanderNode};
24pub use navigation::{CheckArrivalNode, FollowPathNode, PlanPathNode};
25pub use rl_task::RlTaskNode;
26pub use sensing::SensorCheckNode;
27pub use set_go_to_location_target::SetGoToLocationTargetNode;
28pub use set_instance_track_target::SetInstanceTrackTargetNode;
29pub use set_rl_target::SetRlTargetNode;
30pub use timing::{IdleNode, PauseNode, TimerNode};
31
32use crate::{BoxedBehavior, NodeRegistry};
33use serde_json::Value;
34
35macro_rules! register_action {
36    ($registry:expr, $name:literal, $node_type:ty) => {
37        $registry.register($name, |config: Value| -> anyhow::Result<BoxedBehavior> {
38            Ok(Box::new(<$node_type>::from_json(config)?))
39        });
40    };
41}
42
43/// Register all built-in action nodes with a registry.
44pub fn register_builtin_actions(registry: &mut NodeRegistry) {
45    register_action!(registry, "wander", WanderNode);
46    register_action!(registry, "move", MoveNode);
47    register_action!(registry, "sensor_check", SensorCheckNode);
48    register_action!(registry, "timer", TimerNode);
49    register_action!(registry, "idle", IdleNode);
50    register_action!(registry, "pause", PauseNode);
51    register_action!(registry, "stop", StopNode);
52    register_action!(registry, "plan_path", PlanPathNode);
53    register_action!(registry, "follow_path", FollowPathNode);
54    register_action!(registry, "check_arrival", CheckArrivalNode);
55    register_action!(registry, "rl_task", RlTaskNode);
56    register_action!(registry, "set_rl_target", SetRlTargetNode);
57    register_action!(registry, "takeoff", TakeoffNode);
58    register_action!(registry, "land", LandNode);
59    register_action!(registry, "instance_track_task", InstanceTrackTaskNode);
60    register_action!(registry, "set_instance_track_target", SetInstanceTrackTargetNode);
61    register_action!(registry, "capture_target", CaptureTargetNode);
62    register_action!(registry, "go_to_location", GoToLocationNode);
63    register_action!(registry, "set_go_to_location_target", SetGoToLocationTargetNode);
64}