Skip to content
/ uni-app Public

Unrust native/wasm compatibility layer for window, input and filesystem

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

unrust/uni-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

unrust / uni-app

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 (local + http[s], ready-only)

Usage

[dependencies]
uni-app = "0.4.*"
extern crate uni_app;

fn main() {
    // create the game window (native) or canvas (web)
    let app = uni_app::App::new(uni_app::AppConfig {
        size: (800, 600),
        title: "my game".to_owned(),
        vsync: true,
        show_cursor: true,
        headless: false,
        resizable: true,
        fullscreen: false,
        intercept_close_request: false,
        icon: None,
    });
    // start game loop
    app.run(move |app: &mut uni_app::App| {
        for evt in app.events.borrow().iter() {
            // print on stdout (native) or js console (web)
            uni_app::App::print(format!("{:?}", evt));
            // exit when pressing escape
            match &evt {
                uni_app::AppEvent::KeyUp(ev) if ev.code == ScanCode::Escape => {
                    uni_app::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)

Run it from the www/ directory to be able to load the test.txt file :

cd www && cargo run --example basic --release

License

Licensed under either of

at your option.

Contribution

You can contribute to this library through pull requests. If you do so, please update the CHANGELOG.md and CREDITS.md files. If you provide a new feature, consider adding an example as a tutorial/showcase.

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.

About

Unrust native/wasm compatibility layer for window, input and filesystem

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages