use blue_engine::{Engine, WindowDescriptor};
use blue_engine_imgui::{
imgui as gui,
imgui::{
StyleColor, StyleVar, },
style_block, Gui, ImGUI, Style, };
struct MyGUI {}
impl Gui for MyGUI {
fn update(
&mut self,
_window: &blue_engine::Window,
_renderer: &mut blue_engine::Renderer,
_objects: &mut std::collections::HashMap<&'static str, blue_engine::Object>,
_camera: &mut blue_engine::Camera,
_input: &blue_engine::InputHelper,
_plugin_data_storage: &mut std::collections::HashMap<&'static str, Box<dyn std::any::Any>>,
ui: &gui::Ui,
) {
gui::Window::new("Styling Buttons").build(&ui, || {
ui.set_window_font_scale(1.5f32);
style_block(
vec![Style::Color(
StyleColor::Button, [0f32, 0f32, 1f32, 1f32], )], || {
ui.button("Blue Button");
style_block(
vec![
Style::Config(StyleVar::FrameBorderSize(2f32)), Style::Color(StyleColor::Border, [1f32, 1f32, 1f32, 1f32]),
],
|| {
ui.button("Blue Button With Border");
style_block(
vec![Style::Color(StyleColor::Button, [0f32, 1f32, 0f32, 1f32])],
|| {
ui.button("Green Button With Border");
},
&ui,
);
},
&ui,
);
},
&ui,
);
});
}
}
fn main() {
let mut engine = Engine::new(WindowDescriptor::default()).unwrap();
let gui_context = ImGUI::new(
&engine.window,
&mut engine.renderer,
Box::new(
MyGUI {}, ),
);
engine.plugins.push(Box::new(gui_context));
engine
.update_loop(|_, _, _, _, _, _| {})
.expect("Error during update loop");
}