pub struct WatchNode { /* private fields */ }Expand description
Like ParallelNode, but with no memory of a prior resolution: every child is ticked, every
call, unconditionally. Needed for an interrupt-condition layer that must be re-evaluated
indefinitely (e.g. the operator clicking/clearing repeatedly over a session).
Implementations§
Source§impl WatchNode
impl WatchNode
Sourcepub fn new(
children: Vec<Box<dyn BehaviorNode>>,
policy: ParallelPolicy,
) -> WatchNode
pub fn new( children: Vec<Box<dyn BehaviorNode>>, policy: ParallelPolicy, ) -> WatchNode
Create a new watch node with the given children and policy.
Sourcepub fn add_child(&mut self, child: Box<dyn BehaviorNode>)
pub fn add_child(&mut self, child: Box<dyn BehaviorNode>)
Add a child behavior to the watch node.
Trait Implementations§
Source§impl BehaviorNode for WatchNode
impl BehaviorNode for WatchNode
Source§fn active_capability(&self) -> Option<&str>
fn active_capability(&self) -> Option<&str>
Unlike Sequence/Selector/Parallel, every child here is ticked every time with no persisted
statuses to read after the fact - tick() records which child resolved Running this
call into last_active, and this forwards to that child.
Source§fn tick<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
WatchNode: 'async_trait,
fn tick<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
WatchNode: 'async_trait,
Execute one tick of the behavior. Called repeatedly by the execution engine; should
perform one unit of work, return quickly, and report progress via
NodeStatus.Source§fn children_mut(&mut self) -> Vec<&mut dyn BehaviorNode>
fn children_mut(&mut self) -> Vec<&mut dyn BehaviorNode>
Return mutable references to this node’s child behaviors, in the order
they should receive lifecycle events. Leaf nodes should not override this;
composite nodes override it to expose their children.
Source§fn reset_self(&mut self)
fn reset_self(&mut self)
Reset this node’s own local state, ignoring children. Read more
Source§fn reset<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn reset<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Reset the behavior to its initial state. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for WatchNode
impl !UnwindSafe for WatchNode
impl Freeze for WatchNode
impl Send for WatchNode
impl Sync for WatchNode
impl Unpin for WatchNode
impl UnsafeUnpin for WatchNode
Blanket Implementations§
Source§impl<T> BehaviorNodeExt for Twhere
T: BehaviorNode + ?Sized,
impl<T> BehaviorNodeExt for Twhere
T: BehaviorNode + ?Sized,
Source§fn run_until_complete<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Send + 'async_trait,
fn run_until_complete<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Send + 'async_trait,
Run this behavior until it completes (Success or Failure). Read more
Source§fn run_with_limit<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
max_ticks: usize,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Send + 'async_trait,
fn run_with_limit<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 Context,
max_ticks: usize,
) -> Pin<Box<dyn Future<Output = Result<NodeStatus, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Send + 'async_trait,
Run this behavior with a maximum number of ticks. Read more
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more