A prototype plugin providing a simple line drawing api for bevy.
See docs.rs for documentation.
Expect breakage on master.
Click on the above demo to play it.
This plugin uses a shader and sends individual points to the GPU, which then moves geometry to make a line. This is quite fast with a significant number of lines, and there is no added cost to moving lines around.
Add bevy_prototype_debug_lines
to your Cargo.toml
:
[dependencies]
bevy_prototype_debug_lines = "0.2.0"
Add the plugin in your App::build()
phase:
use bevy::prelude::*;
use bevy_prototype_debug_lines::*;
fn main() {
App::build()
.add_plugins(DefaultPlugins)
.add_plugin(DebugLinesPlugin)
...
.run();
}
Draw a line in whatever system you have using the DebugLines
resource:
fn some_system(
...
mut lines: ResMut<DebugLines>
) {
let start = Vec3::splat(-1.0);
let end = Vec3::splat(1.0);
let thickness = 0.01;
lines.line(start, end, thickness);
}
See the examples for more complete usage examples.
You can run the examples like so:
cargo run --example 3d --features="example_deps"
Where 3d
is one of the files in the examples
This plugin is incomplete, so there are some things missing and general annoyances:
- More gracefully handle exceeding max lines (
128000
). - More, I'm sure...
Let me know if you have any requests, improvements, or suggestions on how to make this crate more ergonomic.