Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pradeepkumarrajamanickam/kurinji
Kurinji Input Map aims to decouple game play code from device specific input api. This is achieved by providing apis that allows you to map game actions to device input events instead of directly handling device inputs.
https://github.com/pradeepkumarrajamanickam/kurinji
action-map axis-mapping bevy gameplay inputmap joystick keyboard
Last synced: about 2 months ago
JSON representation
Kurinji Input Map aims to decouple game play code from device specific input api. This is achieved by providing apis that allows you to map game actions to device input events instead of directly handling device inputs.
- Host: GitHub
- URL: https://github.com/pradeepkumarrajamanickam/kurinji
- Owner: PradeepKumarRajamanickam
- License: mit
- Created: 2020-09-07T03:38:47.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-05-30T09:18:40.000Z (over 3 years ago)
- Last Synced: 2024-04-23T16:21:53.425Z (8 months ago)
- Topics: action-map, axis-mapping, bevy, gameplay, inputmap, joystick, keyboard
- Language: Rust
- Homepage:
- Size: 394 KB
- Stars: 51
- Watchers: 1
- Forks: 11
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
### NOTE* Kurinji is not being actively maintained/developed. Please try other plugins for newer Bevy versions. Reason for discontinuing is Bevy is still in its infacy and not very mature i.e. lot of breaking API change between releases requiring more time and effort. Combined with the lack of motivation on my part to continously update. I have decided to pause any development on Bevy plugins for the time being.
### Thank you
# Kurinji Input Map
Input map plugin for bevy(*Note** *Previously called bevy_prototype_input_map*)
![kurinji](https://github.com/PradeepKumarRajamanickam/kurinji/blob/master/img_kurinji.png?raw=true)
Decouples gameplay code from device specific input api. Converts user inputs from different input hardware into game specific actions, eg. *keyboard "Space" or joystick "A" can be mapped to "Jump" Action*.
## Usage
*Add to Cargo.toml dependencies*
```
[dependencies]
kurinji = "*"
``````rust
fn main() {
App::build()
.add_plugin(KurinjiPlugin::default())
.add_startup_system(setup.system())
.add_system(system.system())
.run();
}fn setup(
mut kurinji: ResMut,
) {
// with data
// refer "example/config/gamepad.ron"
let binding_ron = fs::read_to_string("example/config/gamepad.ron").unwrap()
kurinji.set_bindings_with_ron(&binding_ron);// or
// via code
kurinji
.bind_keyboard_pressed(KeyCode::Return, "SHOOT")
.bind_mouse_motion(Axis::YNegative, "AIM_UP")
.set_dead_zone("AIM_UP", 0.1)
}// system
fn system(kurinji: Res) {
if input_map.is_action_active("SHOOT") {
println!("Bang...");
}
```*Check out [examples](https://github.com/PradeepKumarRajamanickam/kurinji/tree/master/example)
## Example
Use commandsVia Code
> cargo run --example keyboard_mouse_with_code> cargo run --example gamepad_with_code
Via JSON/RON
> cargo run --example keyboard_mouse_with_json> cargo run --example gamepad_with_ron
For Action Events Usage
> cargo run --example with_action_events## Features
- Supports: Keyboard, Mouse and Joystick inputs
- Action Events: OnActionBegin, OnActionProgress, OnActionEnd
- Event Phase: Ability to set at which event phase an action is active
- JSON/RON Support: Ability to use serialised string to setup bindings
- Binding Stack: Ability to Push, Additive Push and Pop bindings
- Action Strength & Deadzone
- Custom Strength CurveNote* Latest commit on master branch might be unstable. Use the release tags if you are looking for stable commits
or grab crate from https://crates.io/crates/kurinji## Bug Report
https://github.com/PradeepKumarRajamanickam/kurinji/issues# Release Notes
## v1.0.5 (22 dec, 2020)
- Upgrade to Bevy 0.4.0
- *author: @Nolan Darilek*
- fixed* clippy warnings
## v1.0.4 (3 dec, 2020)
- fixed* Joystick axis inputs not detected## v1.0.3 (26 Nov, 2020)
- fixed* Events not behaving as expected #36
## v1.0.0/1/2 (21 Nov, 2020)
- rebranded* as Kurinji
## v0.1.5 (18 Nov, 2020)
- Joystick Support
- Improved Documentations
## v0.1.4 (03 Oct, 2020)
- Event Phase
- Action Events## v0.1.3 (18 Sept, 2020)
- Binding Stack
- JSON & RON Support
## v0.1.2 (14 Sept, 2020)
- New API
- Ability to set custom strength curve## v0.1.1 (7 Sept, 2020)
- minor* Readme changes
- Had to bump the version to publish some readme changes## v0.1.0 (7 Sept, 2020)
- Keyboard Key Mapping
- Key press can now be binded to action
- Mouse Button Mapping
- Mouse button press can now be binded to action
- Mouse Move Mapping
- Mouse move event can now be mapped to action
- Action Strength
- Can now query strength of an action.
- It will be in range of 0.0 - 1.0
- Useful for analog inputs like joystick
- Action Deadzone
- For analog inputs sometimes it is meaningful to have a min threshold to avoid small input noise and to reduce sensitivity## Author
Pradeep Kumar Rajamanickam## Acknowledgments
Inspired by
- Godot Input Mapper
[https://godotengine.org/article/handling-axis-godot]
- Unreal Action/Axis Mapping
[https://docs.unrealengine.com/en-US/Gameplay/Input/index.html]