From f117536b54494aaa3c5ddca86db9c8ee922d0a4c Mon Sep 17 00:00:00 2001 From: kaphula Date: Sat, 27 Jan 2024 06:50:44 +0200 Subject: [PATCH] Add utility constructors for Event and UpdateArgs for easy 0.0 delta time. Modify RepeatSequence doc code to make use of them. --- bonsai/src/behavior.rs | 8 +++++--- bonsai/src/event.rs | 13 +++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/bonsai/src/behavior.rs b/bonsai/src/behavior.rs index 23e0a40..c60aa68 100644 --- a/bonsai/src/behavior.rs +++ b/bonsai/src/behavior.rs @@ -65,18 +65,20 @@ pub enum Behavior { ///use bonsai_bt::Event; /// ///#[derive(Clone, Debug)] + /// ///enum Ex { A, B, C } + /// ///let rs = RepeatSequence( /// Box::new(Action(Ex::A)), /// vec![Action(Ex::B), Action(Ex::C)], ///); - ///let mut bt = BT::new(rs, ()); + /// ///let (SUCCESS, FAILURE, RUNNING ) = ((Success, 0.0), (Failure, 0.0), (Running, 0.0)); /// - ///let e: Event = UpdateArgs { dt: 0.0 }.into(); + ///let mut bt = BT::new(rs, ()); /// ///let mut i = 0; - ///let status = bt.tick(&e, &mut |args: ActionArgs, blackboard| { + ///let status = bt.tick(&Event::zero_dt_args(), &mut |args: ActionArgs, _| { /// match args.action { /// Ex::A => { /// i += 1; diff --git a/bonsai/src/event.rs b/bonsai/src/event.rs index cb3c285..5aa4f77 100644 --- a/bonsai/src/event.rs +++ b/bonsai/src/event.rs @@ -9,6 +9,13 @@ pub struct UpdateArgs { pub dt: f64, } +impl UpdateArgs { + /// Creates [UpdateArgs] with `0.0` delta time. + pub fn zero_dt() -> UpdateArgs { + Self { dt: 0.0 } + } +} + /// Models loop events. #[derive(Copy, Clone, Debug, PartialEq, PartialOrd, serde::Deserialize, serde::Serialize)] pub enum Loop { @@ -30,6 +37,12 @@ pub enum Event { /// Events that commonly used by event loops. Loop(Loop), } +impl Event { + /// Creates [Event] from [UpdateArgs] with `0.0` delta time. + pub fn zero_dt_args() -> Self { + UpdateArgs::zero_dt().into() + } +} /// When the application state should be updated. pub trait UpdateEvent: Sized {