new: initial implementation

This commit is contained in:
Matthew Ryan Dillon 2024-08-15 17:39:18 -04:00
parent 5ea7f6de91
commit 69d911ccb8
3 changed files with 67 additions and 7 deletions

7
Cargo.lock generated
View file

@ -1669,6 +1669,7 @@ version = "0.1.0"
dependencies = [
"bevy",
"bevy_egui",
"vsort",
]
[[package]]
@ -3867,6 +3868,12 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "vsort"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11331a1b48f99ea6bb27faae41399d08783d055ddee131e1b1b70a854207ebf8"
[[package]]
name = "walkdir"
version = "2.5.0"

View file

@ -5,4 +5,6 @@ edition = "2021"
[dependencies]
bevy = "0.14"
bevy_egui = "0.28"
bevy_egui = "0.28"
# natord = "1.0"
vsort = "0.2"

View file

@ -1,16 +1,67 @@
use bevy::prelude::*;
use bevy_egui::{egui, EguiContexts, EguiPlugin};
use bevy::{prelude::*, winit::WinitSettings};
use bevy_egui::{
egui::{self},
EguiContexts, EguiPlugin,
};
#[cfg(windows)]
const LINE_ENDING: &str = "\r\n";
#[cfg(not(windows))]
const LINE_ENDING: &str = "\n";
#[derive(Resource)]
struct InputText {
value: String,
}
#[derive(Resource)]
struct OutputText {
value: String,
}
fn main() {
App::new()
.insert_resource(WinitSettings::desktop_app())
.insert_resource(InputText {
value: "".to_string(),
})
.insert_resource(OutputText {
value: "".to_string(),
})
.add_plugins(DefaultPlugins)
.add_plugins(EguiPlugin)
.add_systems(Update, ui_example_system)
.add_systems(Update, ui_system)
.add_systems(Update, process_text)
.run();
}
fn ui_example_system(mut contexts: EguiContexts) {
egui::Window::new("Hello").show(contexts.ctx_mut(), |ui| {
ui.label("world");
fn process_text(input_text: Res<InputText>, mut output_text: ResMut<OutputText>) {
let mut arr = input_text.value.lines().collect::<Vec<_>>();
arr.sort_by(|&a, &b| vsort::compare(a, b));
output_text.value = arr.join(LINE_ENDING);
}
fn ui_system(
mut contexts: EguiContexts,
mut input_text: ResMut<InputText>,
mut output_text: ResMut<OutputText>,
) {
egui::CentralPanel::default().show(contexts.ctx_mut(), |ui| {
ui.horizontal(|ui| {
ui.vertical(|ui| {
ui.label("input: ");
ui.add_sized(
[ui.available_width() / 2.0, ui.available_height()],
egui::TextEdit::multiline(&mut input_text.value),
);
});
ui.vertical(|ui| {
ui.label("output: ");
ui.add_sized(
[ui.available_width() / 2.0, ui.available_height()],
egui::TextEdit::multiline(&mut output_text.value),
);
});
});
});
}