This commit is contained in:
2026-02-11 02:30:53 +01:00
parent 1f689bab03
commit d281ad68c2
3 changed files with 36 additions and 9 deletions

View File

@@ -1,4 +1,4 @@
use std::f32::consts::TAU;
use std::f32::consts::{PI, TAU};
use std::time::Duration;
use bevy::app::ScheduleRunnerPlugin;
@@ -12,7 +12,7 @@ use wgpu::{TextureFormat, TextureUsages};
mod post_process;
use crate::post_process::PostProcessSettings;
use crate::renderer::{ImageExport, ImageExportPlugin, ImageExportSource};
use crate::renderer::{G13Resource, ImageExport, ImageExportPlugin, ImageExportSource};
use crate::shared::Spinner;
mod renderer;
@@ -28,13 +28,13 @@ fn main() {
})
.build()
.disable::<WinitPlugin>(),
ScheduleRunnerPlugin::run_loop(Duration::from_secs_f64(1. / 24.)),
ScheduleRunnerPlugin::run_loop(Duration::from_secs_f64(1. / 30.)),
post_process::PostProcessPlugin,
ImageExportPlugin,
))
.insert_resource(ClearColor(Color::linear_rgba(0.0, 0.0, 0.0, 1.0)))
.add_systems(Startup, setup_scene_system)
.add_systems(Update, rotate_cube)
.add_systems(Update, (rotate_cube))
.run();
}
@@ -72,8 +72,27 @@ fn setup_scene_system(
commands.spawn((ImageExport(export_sources.add(image_handle)),));
}
fn rotate_cube(mut cubes: Query<(&mut Transform, &Spinner)>, timer: Res<Time>) {
fn rotate_cube(
mut cubes: Query<(&mut Transform, &Spinner)>,
timer: Res<Time>,
g13: Res<G13Resource>,
) {
const DEADZONE: i32 = 30;
let g13 = g13.g13.state();
let mut x = g13.x as f32 / 512.0;
let mut y = g13.y as f32 / 512.0;
if g13.x > -DEADZONE && g13.x < DEADZONE {
x = 0.0;
}
if g13.y > -DEADZONE && g13.y < DEADZONE {
y = 0.0;
}
for (mut transform, _cube) in &mut cubes {
transform.rotate_y(0.25 * TAU * timer.delta_secs());
transform.rotate_y(x * PI * timer.delta_secs());
transform.rotate_x(y * PI * timer.delta_secs());
}
}

View File

@@ -184,7 +184,17 @@ impl Plugin for ImageExportPlugin {
let g13 = G13::new().expect("G13 to be connected");
let mut _g13 = g13.clone();
std::thread::spawn(move || {
loop {
_g13.read().expect("G13 to be connected");
}
});
let g13r: G13Resource = G13Resource { g13 };
app.configure_sets(PostUpdate, ImageExportSetup)
.insert_resource(g13r.clone())
.register_type::<ImageExportSource>()
.init_asset::<ImageExportSource>()
.register_asset_reflect::<ImageExportSource>()
@@ -196,7 +206,7 @@ impl Plugin for ImageExportPlugin {
let render_app = app.sub_app_mut(RenderApp);
render_app.insert_resource(G13Resource { g13 }).add_systems(
render_app.insert_resource(g13r).add_systems(
Render,
save_buffer_to_disk
.after(RenderSystems::Render)