pub mod base;
pub mod controller;
pub mod global;
pub mod lateral;
pub mod longitudinal;
pub mod movement;
pub mod routing;
pub mod synchronize;
pub mod trajectory;
pub mod visibility;
pub use base::{ActionBuilder, ManeuverAction};
pub use controller::{ActivateControllerActionBuilder, AssignControllerActionBuilder};
pub use global::{EntityActionBuilder, EnvironmentActionBuilder, VariableActionBuilder};
pub use lateral::{LaneChangeActionBuilder, LaneOffsetActionBuilder, LateralDistanceActionBuilder};
pub use longitudinal::{LongitudinalDistanceActionBuilder, SpeedProfileActionBuilder};
pub use movement::{SpeedActionBuilder, TeleportActionBuilder};
pub use routing::{AssignRouteActionBuilder, FollowRouteActionBuilder};
pub use synchronize::SynchronizeActionBuilder;
pub use trajectory::{
FollowTrajectoryActionBuilder, PolylineBuilder, TrajectoryBuilder, VertexBuilder,
};
pub use visibility::VisibilityActionBuilder;
use crate::builder::BuilderResult;
use crate::types::actions::wrappers::PrivateAction;
#[derive(Debug, Default)]
pub struct ActionCollection {
actions: Vec<PrivateAction>,
}
impl ActionCollection {
pub fn new() -> Self {
Self::default()
}
pub fn add_action<A: ActionBuilder>(mut self, action_builder: A) -> BuilderResult<Self> {
let action = action_builder.build_action()?;
self.actions.push(action);
Ok(self)
}
pub fn into_actions(self) -> Vec<PrivateAction> {
self.actions
}
}