Coder Social home page Coder Social logo

ndarilek / kurinji Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pradeepkumarrajamanickam/kurinji

0.0 1.0 0.0 348 KB

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.

License: MIT License

Rust 100.00%

kurinji's Introduction

Kurinji Input Map

Input map plugin for bevy

(Note* Previously called bevy_prototype_input_map)

kurinji

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 = "*"
fn main() {
    App::build()
        .add_plugin(KurinjiPlugin::default())
        .add_startup_system(setup.system())
        .add_system(system.system())
        .run();
}

fn setup(
    mut kurinji: ResMut<Kurinji>,
) {
    // 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<Kurinji>) {
    if input_map.is_action_active("SHOOT") {
        println!("Bang...");
    }

*Check out examples

Example

Use commands

Via 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 Curve

Note* 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.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

kurinji's People

Contributors

borisboutillier avatar mockersf avatar ndarilek avatar pradeepkumarrajamanickam avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.