Skip to content

A prototype plugin providing a simple line drawing api for bevy.

License

Notifications You must be signed in to change notification settings

dtaralla/bevy_debug_lines

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bevy_debug_lines

crates.io docs.rs

A plugin providing a simple line drawing api for bevy.

demo demo_2 Click on the above demo to play it.

Master branch has no stability guarantees.

About

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.

Usage

Add bevy_prototype_debug_lines to your Cargo.toml:

[dependencies]
bevy_prototype_debug_lines = "0.3"

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 duration = 0.0;     // Duration of 0 will show the line for 1 frame.
    lines.line(start, end, duration);
}

Some options, such as depth testing, can be changed by inserting the DebugLines resource yourself:

use bevy::prelude::*;
use bevy_prototype_debug_lines::*;

fn main() {
    App::build()
    .add_plugins(DefaultPlugins)
    .add_plugin(DebugLinesPlugin)
    .insert_resource(DebugLines { depth_test: true, ..Default::default() })
    ...
    .run();
}

See the examples for more complete usage examples.

Running 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

Changes in 0.3.0

In 0.3.0, the thickness parameter has been removed. I don't believe it provides enough value for the performance, time, or issues. However, if you feel differently, let me know in this issue.

This is technically a non-breaking change (i.e. your code will still compile) because duration was added which takes the same spot, but beware that your code still needs to be updated (probably just set old thickness values to 0, if you don't care about duration stuff.).

Bevy Version Support

bevy bevy_prototype_debug_lines
main bevy-main branch (not guaranteed maintained)
0.5 0.3
0.4 0.2.1

Please do not hesitate to let me know if you have any requests, improvements, or suggestions on how to make this crate more ergonomic or otherwise.

About

A prototype plugin providing a simple line drawing api for bevy.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 85.8%
  • GLSL 14.2%