5 releases
| 0.1.4 | Jan 30, 2025 |
|---|---|
| 0.1.3 | Jan 1, 2025 |
| 0.1.2 | Aug 31, 2024 |
| 0.1.1 | Aug 31, 2024 |
| 0.1.0 | Aug 31, 2024 |
#763 in Game dev
446 downloads per month
36KB
276 lines
bevy 2d line
Bevy port of https://github.com/mattdesl/three-line-2d
Polylines in a vertex shader; plays nice with projection scale, z-index; supports vertex colors. Does not support picking!
Moving thousands of line endpoints every frame will be slow, because the mesh needs rebuilt when the lines are moved.
Lazily maintained at best!
Compatibility
| Bevy Version | bevy_2d_line Version |
|---|---|
| 0.15 | 0.1.3 |
| 0.14 | 0.1.2 |
Installation
Add the following to your Cargo.toml:
[dependencies]
bevy_2d_line = "0.1.3"
Usage
- Add the
LineRenderingPluginto your Bevy app:
use bevy::prelude::*;
use bevy_2d_line::LineRenderingPlugin;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
// Must be added after the `DefaultPlugins`
.add_plugins(LineRenderingPlugin)
.add_systems(Startup, setup)
.run();
}
[!IMPORTANT] The
LineRenderingPluginmust be added after theDefaultPlugins
- Create and spawn a
Linecomponent:
use bevy_2d_line::Line;
use bevy::{color::palettes::css::{BLUE, GREEN, RED}, prelude::*};
fn setup(mut commands: Commands) {
commands.spawn(Camera2d::default());
let points = vec![
Vec2::new(-200.0, 0.0),
Vec2::new(0.0, 200.0),
Vec2::new(200.0, 0.0),
];
let colors = vec![
RED.into(),
GREEN.into(),
BLUE.into(),
];
commands.spawn(Line {
points,
colors,
thickness: 5.0,
});
}
Examples
Check out the examples directory for more detailed usage:
simple_line.rs: Basic usage of the line renderercurved_line.rs: Rendering a curved line using Bezier curves
To run an example:
cargo run --example simple_line
License
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Dependencies
~38MB
~662K SLoC