Input!
This commit is contained in:
@@ -33,7 +33,6 @@ pub struct State {
|
|||||||
pub x: i32,
|
pub x: i32,
|
||||||
pub y: i32,
|
pub y: i32,
|
||||||
pub buttons: Buttons,
|
pub buttons: Buttons,
|
||||||
pub previous_buttons: Buttons,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, Default)]
|
#[derive(Debug, Clone, Copy, Default)]
|
||||||
@@ -120,7 +119,6 @@ impl G13 {
|
|||||||
pub fn read(&self) -> Result<State, Box<dyn std::error::Error>> {
|
pub fn read(&self) -> Result<State, Box<dyn std::error::Error>> {
|
||||||
let mut state = self.state();
|
let mut state = self.state();
|
||||||
|
|
||||||
state.previous_buttons = state.buttons;
|
|
||||||
let mut reader = self.interface.endpoint::<Interrupt, In>(0x81)?.reader(8);
|
let mut reader = self.interface.endpoint::<Interrupt, In>(0x81)?.reader(8);
|
||||||
let mut buf = [0; 8];
|
let mut buf = [0; 8];
|
||||||
reader.read_exact(&mut buf)?;
|
reader.read_exact(&mut buf)?;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use std::f32::consts::TAU;
|
use std::f32::consts::{PI, TAU};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
use bevy::app::ScheduleRunnerPlugin;
|
use bevy::app::ScheduleRunnerPlugin;
|
||||||
@@ -12,7 +12,7 @@ use wgpu::{TextureFormat, TextureUsages};
|
|||||||
mod post_process;
|
mod post_process;
|
||||||
|
|
||||||
use crate::post_process::PostProcessSettings;
|
use crate::post_process::PostProcessSettings;
|
||||||
use crate::renderer::{ImageExport, ImageExportPlugin, ImageExportSource};
|
use crate::renderer::{G13Resource, ImageExport, ImageExportPlugin, ImageExportSource};
|
||||||
use crate::shared::Spinner;
|
use crate::shared::Spinner;
|
||||||
|
|
||||||
mod renderer;
|
mod renderer;
|
||||||
@@ -28,13 +28,13 @@ fn main() {
|
|||||||
})
|
})
|
||||||
.build()
|
.build()
|
||||||
.disable::<WinitPlugin>(),
|
.disable::<WinitPlugin>(),
|
||||||
ScheduleRunnerPlugin::run_loop(Duration::from_secs_f64(1. / 24.)),
|
ScheduleRunnerPlugin::run_loop(Duration::from_secs_f64(1. / 30.)),
|
||||||
post_process::PostProcessPlugin,
|
post_process::PostProcessPlugin,
|
||||||
ImageExportPlugin,
|
ImageExportPlugin,
|
||||||
))
|
))
|
||||||
.insert_resource(ClearColor(Color::linear_rgba(0.0, 0.0, 0.0, 1.0)))
|
.insert_resource(ClearColor(Color::linear_rgba(0.0, 0.0, 0.0, 1.0)))
|
||||||
.add_systems(Startup, setup_scene_system)
|
.add_systems(Startup, setup_scene_system)
|
||||||
.add_systems(Update, rotate_cube)
|
.add_systems(Update, (rotate_cube))
|
||||||
.run();
|
.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,8 +72,27 @@ fn setup_scene_system(
|
|||||||
commands.spawn((ImageExport(export_sources.add(image_handle)),));
|
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 {
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,7 +184,17 @@ impl Plugin for ImageExportPlugin {
|
|||||||
|
|
||||||
let g13 = G13::new().expect("G13 to be connected");
|
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)
|
app.configure_sets(PostUpdate, ImageExportSetup)
|
||||||
|
.insert_resource(g13r.clone())
|
||||||
.register_type::<ImageExportSource>()
|
.register_type::<ImageExportSource>()
|
||||||
.init_asset::<ImageExportSource>()
|
.init_asset::<ImageExportSource>()
|
||||||
.register_asset_reflect::<ImageExportSource>()
|
.register_asset_reflect::<ImageExportSource>()
|
||||||
@@ -196,7 +206,7 @@ impl Plugin for ImageExportPlugin {
|
|||||||
|
|
||||||
let render_app = app.sub_app_mut(RenderApp);
|
let render_app = app.sub_app_mut(RenderApp);
|
||||||
|
|
||||||
render_app.insert_resource(G13Resource { g13 }).add_systems(
|
render_app.insert_resource(g13r).add_systems(
|
||||||
Render,
|
Render,
|
||||||
save_buffer_to_disk
|
save_buffer_to_disk
|
||||||
.after(RenderSystems::Render)
|
.after(RenderSystems::Render)
|
||||||
|
|||||||
Reference in New Issue
Block a user