mecha10_behavior_runtime/actions/
mod.rs1mod 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
43pub 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}