1 个不稳定版本
0.0.0 | 2022年1月25日 |
---|
#98 in #语义
36KB
879 行
Keybee
Keybee是一个语义输入绑定库。 它目前是一个从更大的游戏项目中提取出来的早期概念验证,经过修改,测试不充分。
Keybee围绕简单的核心原语构建
Session
存储应用的所有状态Action
定义玩家可以执行的操作,例如跳跃或移动ActionSet
将相关操作组合在一起Bindings
将输入分配给操作
特性
winit
: 启用对winit事件的支撑gilrs
: 启用对gil-rs事件的支撑
入门指南
use keybee::{Session, ButtonAction, Clamped, Axis2dAction};
let session = keybee::Session::new();
let gameplay = session.create_action_set("gameplay");
let jump = gameplay.create_action::<ButtonAction>("jump");
let movement = gameplay.create_action::<Clamped<Axis2dAction>>("movement");
// Keybee will have support for deserializing bindings from files, but for now,
// this isn't quite done.
session.use_bindings(todo!("load bindings from somewhere"));
loop {
// With the `winit` feature enabled:
// session.handle_winit_event::<()>(todo!("pass winit events"));
// With the `gilrs` feature enabled:
// session.handle_gilrs_event(todo!("pass gil-rs events"));
if jump.get() {
println!("Player jumped!");
}
let translate = movement.get();
if translate != (0.0, 0.0) {
println!("Player movement vector: {:?}", translate);
}
// At the end of every game tick, run `end_update` to reset relative axis
// movements and button presses.
session.end_update();
}
未来改进
- 支持多玩家
- 其他后端:SDL,其他
许可证
根据您选择的以下任一项进行许可
- Apache许可证,版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证的定义,应按上述方式进行双重许可,没有任何附加条款或条件。
依赖
~1–4MB
~84K SLoC