# dacho
## What is it
An ECS game engine, written in pure Rust
## Disclaimer
This project is in it's early stage
A lot of features are still WIP or TODO
Expect breaking changes at each release
There is no documentation yet
The current [ECS implementation](src/ecs/world.rs) is temporary
## Usage
In dacho, you insert Systems into schedules
```rust
// A simple usage example
use dacho::prelude::*;
fn main() {
let mut app = App::new("My game");
app.start(|_| println!("Hello, World!"));
app.keyboard(|_, key, is_pressed| {
if is_pressed && key == Key::Space {
println!("jump!");
}
});
app.run();
}
```
See the [dacho example](https://github.com/mochou-p/dacho-example) for more
## Cargo features
- [ ] [vulkan-validation-layers](https://github.com/KhronosGroup/Vulkan-ValidationLayers) (requires the [Vulkan SDK](https://vulkan.lunarg.com/sdk/home) installed on your system)
###### A checked box means the feature is on by default
## Notes
- If you are using a tiling WM, it is currently recommended that you make a rule to open dacho as floating
## License
Licensed under either of
* Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
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