4 个版本
使用旧 Rust 2015
0.0.4 | 2016年8月29日 |
---|---|
0.0.3 | 2015年12月20日 |
0.0.2 | 2015年2月15日 |
0.0.1 | 2015年2月12日 |
#1921 in 算法
14KB
268 行
Beehave
一个用于定义和评估层次状态机(行为树)的简单库。
兼容性
由于这个库使用了 fn_traits
和 unboxed_closures
,它只能使用 rust nightly 编译。有关稳定的有关问题的相关信息,请参阅 rust-lang/rust#29625。
此版本最后与 rustc 1.13.0-nightly (a23064af5 2016-08-27)
进行了测试。
示例
使用提供的宏构建行为树
let world_behaviour: Selector<World> = behaviour_selector!("World Root", [
condition!("Ensure Can Shine",
|world: &mut World| {
world.can_shine()
},
action!("Cycle Day/Night", |world: &mut World| {
world.toggle_sun()
})
),
condition!("Ensure Can Rain",
|world: &mut World| {
world.can_rain()
},
action!("Rain", |world: &mut World| {
world.rain()
})
)
]);
let tree_behaviour: Selector<Tree> = behaviour_selector!("Tree Root", [
behaviour_sequence!("Photosynthesise", [
condition!("Ensure Can Make Energy",
|tree: &mut Tree| {
tree.can_make_energy()
},
action!("Make Energy", |tree: &mut Tree| {
tree.make_energy()
})
),
condition!("Ensure Can Grow",
|tree: &mut Tree| {
tree.can_grow()
},
action!("Grow", |tree: &mut Tree| {
tree.grow()
})
),
condition!("Ensure Can Emit Oxygen",
|tree: &mut Tree| {
tree.can_emit_oxygen()
},
action!("Emit Oxygen", |tree: &mut Tree| {
tree.emit_oxygen()
})
)
]),
condition!("Ensure Can Gather Sun",
|tree: &mut Tree| {
tree.can_gather_sun()
},
action!("Emit Oxygen", |tree: &mut Tree| {
tree.gather_sun()
})
),
condition!("Ensure Can Gather Water",
|tree: &mut Tree| {
tree.can_gather_water()
},
action!("Emit Oxygen", |tree: &mut Tree| {
tree.gather_water()
})
)
]);
对演员评估行为树
tree_behaviour.evaluate(&mut tree);
world_behaviour.evaluate(&mut world);
有关更多信息,请参阅 完整示例。
您可以使用以下命令运行示例
cargo run --example main
设计目标
- 轻松生成不可变的行为树
- 在可变演员上评估行为树
另请参阅
许可证
Beehave 由 Ryan Scott 创建,根据 MIT 许可证分发。