unrust / uni-app

Build Status Documentation crates.io

This library is a part of Unrust, a pure rust native/wasm game engine. This library provides a native/wasm compatibility layer for following components : * Window creation * Input (mouse + keyboard) * File system (ready-only)

Usage

toml [dependencies] uni-app = "0.2.*"

```rust extern crate uni_app;

fn main() { // create the game window (native) or canvas (web) let app = uniapp::App::new(uniapp::AppConfig { size: (800, 600), title: "my game".toowned(), vsync: true, showcursor: true, headless: false, resizable: true, fullscreen: false, }); // start game loop app.run(move |app: &mut uniapp::App| { for evt in app.events.borrow().iter() { // print on stdout (native) or js console (web) uniapp::App::print(format!("{:?}\n", evt)); // exit on key ou mouse press match evt { &uniapp::AppEvent::KeyUp() => { uniapp::App::exit(); } &uniapp::AppEvent::MouseUp() => { uniapp::App::exit(); } _ => (), } } }); } ```

Build

As web app (wasm32-unknown-unknown)

Install wasm32 target : rustup target install wasm32-unknown-unknown Install wasm-pack and npm

Compile the demo with wasm-pack build examples This creates a wasm package in examples/pkg

Run the demo with cd www npm install npm run start

Open your browser at http://localhost:8080/

As desktop app (native-opengl)

cargo run --example basic --release

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.