add piston stuff
This commit is contained in:
parent
82ed8948fb
commit
279127677d
4 changed files with 134 additions and 8 deletions
56
Cargo.lock
generated
56
Cargo.lock
generated
|
|
@ -10,6 +10,7 @@ dependencies = [
|
||||||
"ftdi-embedded-hal",
|
"ftdi-embedded-hal",
|
||||||
"image",
|
"image",
|
||||||
"piston_window",
|
"piston_window",
|
||||||
|
"pistoncore-sdl2_window",
|
||||||
"unreal_asset",
|
"unreal_asset",
|
||||||
"url",
|
"url",
|
||||||
]
|
]
|
||||||
|
|
@ -758,6 +759,15 @@ dependencies = [
|
||||||
"gl_generator 0.13.1",
|
"gl_generator 0.13.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "gl"
|
||||||
|
version = "0.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a94edab108827d67608095e269cf862e60d920f144a5026d3dbcfd8b877fb404"
|
||||||
|
dependencies = [
|
||||||
|
"gl_generator 0.14.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gl_generator"
|
name = "gl_generator"
|
||||||
version = "0.13.1"
|
version = "0.13.1"
|
||||||
|
|
@ -1569,7 +1579,7 @@ version = "0.72.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "006f26dfaef3db5d3f29927a5aeedc62680e947707cd1d33015a7dba32234bdb"
|
checksum = "006f26dfaef3db5d3f29927a5aeedc62680e947707cd1d33015a7dba32234bdb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gl",
|
"gl 0.13.0",
|
||||||
"glutin",
|
"glutin",
|
||||||
"glutin-winit",
|
"glutin-winit",
|
||||||
"pistoncore-input",
|
"pistoncore-input",
|
||||||
|
|
@ -1591,6 +1601,19 @@ dependencies = [
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pistoncore-sdl2_window"
|
||||||
|
version = "0.71.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4a55932286299ac3b9aef1b97e2cfaa37b4daed00260da152736d9d435acd3a2"
|
||||||
|
dependencies = [
|
||||||
|
"gl 0.14.0",
|
||||||
|
"pistoncore-input",
|
||||||
|
"pistoncore-window",
|
||||||
|
"sdl2",
|
||||||
|
"shader_version",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pistoncore-window"
|
name = "pistoncore-window"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
|
@ -1905,6 +1928,29 @@ dependencies = [
|
||||||
"tiny-skia",
|
"tiny-skia",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sdl2"
|
||||||
|
version = "0.37.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3b498da7d14d1ad6c839729bd4ad6fc11d90a57583605f3b4df2cd709a9cd380"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 1.3.2",
|
||||||
|
"lazy_static",
|
||||||
|
"libc",
|
||||||
|
"sdl2-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sdl2-sys"
|
||||||
|
version = "0.37.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "951deab27af08ed9c6068b7b0d05a93c91f0a8eb16b6b816a5e73452a43521d3"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"version-compare 0.1.1",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.210"
|
version = "1.0.210"
|
||||||
|
|
@ -2075,7 +2121,7 @@ dependencies = [
|
||||||
"heck",
|
"heck",
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
"toml",
|
"toml",
|
||||||
"version-compare",
|
"version-compare 0.2.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -2329,6 +2375,12 @@ dependencies = [
|
||||||
"piston-float",
|
"piston-float",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "version-compare"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version-compare"
|
name = "version-compare"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,15 @@ clap = { version = "4.5.17", features = ["derive"] }
|
||||||
ftdi-embedded-hal = { version = "0.22.0", features = ["libftd2xx"], optional = true }
|
ftdi-embedded-hal = { version = "0.22.0", features = ["libftd2xx"], optional = true }
|
||||||
image = "0.25.2"
|
image = "0.25.2"
|
||||||
piston_window = { version = "0.132.0", optional = true }
|
piston_window = { version = "0.132.0", optional = true }
|
||||||
|
pistoncore-sdl2_window = { version = "0.71.0", optional = true }
|
||||||
unreal_asset = "0.1.16"
|
unreal_asset = "0.1.16"
|
||||||
url = "2.5.2"
|
url = "2.5.2"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["ftdi","piston"]
|
default = ["ftdi","piston","pistoninput"]
|
||||||
ftdi = ["dep:ftdi-embedded-hal"]
|
ftdi = ["dep:ftdi-embedded-hal"]
|
||||||
piston = ["dep:piston_window"]
|
piston = ["dep:piston_window"]
|
||||||
|
pistoninput = ["dep:pistoncore-sdl2_window"]
|
||||||
|
|
||||||
[profile.dev]
|
[profile.dev]
|
||||||
opt-level = 3
|
opt-level = 3
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ impl Input {
|
||||||
let mut buf = [0; 1500];
|
let mut buf = [0; 1500];
|
||||||
loop {
|
loop {
|
||||||
let mut leds: Vec<[f32; 4]> = Vec::new();
|
let mut leds: Vec<[f32; 4]> = Vec::new();
|
||||||
println!("dead");
|
|
||||||
let (amt, _src) = socket.recv_from(&mut buf).unwrap();
|
let (amt, _src) = socket.recv_from(&mut buf).unwrap();
|
||||||
let bytes = buf[..amt].to_vec();
|
let bytes = buf[..amt].to_vec();
|
||||||
// let _ = tx.send();
|
// let _ = tx.send();
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,12 @@ impl Output {
|
||||||
let mut timesince = Instant::now();
|
let mut timesince = Instant::now();
|
||||||
let mut buf = [0u8; 60];
|
let mut buf = [0u8; 60];
|
||||||
let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
||||||
|
let mut conx: f64 = 0.0;
|
||||||
|
let mut cony: f64 = 0.0;
|
||||||
|
|
||||||
//screen init
|
//screen init
|
||||||
let mut window: PistonWindow = WindowSettings::new("ELApse", [800, 800])
|
let mut window: PistonWindow<sdl2_window::Sdl2Window> = WindowSettings::new("ELApse", [800, 800])
|
||||||
.transparent(true)
|
.transparent(false)
|
||||||
.exit_on_esc(true)
|
.exit_on_esc(true)
|
||||||
.build()
|
.build()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
@ -79,6 +81,33 @@ impl Output {
|
||||||
mousehold = false
|
mousehold = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Controller test
|
||||||
|
if let Some(Button::Controller(button)) = e.press_args() {
|
||||||
|
println!("Pressed mouse button '{:?}'", button);
|
||||||
|
}
|
||||||
|
if let Some(Button::Controller(button)) = e.release_args() {
|
||||||
|
println!("DePressed mouse button '{:?}'", button);
|
||||||
|
}
|
||||||
|
if let Some(args) = e.controller_axis_args() {
|
||||||
|
println!("DePressed mouse button '{:?}'", args);
|
||||||
|
if args.axis == 2 || args.axis == 5 {
|
||||||
|
if args.position > -0.5 {
|
||||||
|
mousehold = true
|
||||||
|
} else {
|
||||||
|
mousehold = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if args.axis == 0 {
|
||||||
|
conx = args.position;
|
||||||
|
let wh = compare(800.0,800.0) * 0.75;
|
||||||
|
lastpos = calc_pos_con([conx,cony], [400.0,400.0], wh);
|
||||||
|
}
|
||||||
|
if args.axis == 1 {
|
||||||
|
cony = args.position;
|
||||||
|
let wh = compare(800.0,800.0) * 0.75;
|
||||||
|
lastpos = calc_pos_con([conx,cony], [400.0,400.0], wh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Led receival
|
//Led receival
|
||||||
match rx.recv_timeout(Duration::from_millis(1)) {
|
match rx.recv_timeout(Duration::from_millis(1)) {
|
||||||
|
|
@ -125,8 +154,10 @@ fn calc_pos(point: [f64; 2], center: [f64; 2], wh: f64) -> Option<(i16, i16)> {
|
||||||
if deg < 0.0 {
|
if deg < 0.0 {
|
||||||
deg += 60.0;
|
deg += 60.0;
|
||||||
}
|
}
|
||||||
let x = offset(deg as i16, 60, 45)-1;
|
let mut x = deg as i16-15;
|
||||||
|
if x < 0 {
|
||||||
|
x += 60
|
||||||
|
}
|
||||||
let mut y: Option<i16> = None;
|
let mut y: Option<i16> = None;
|
||||||
for i in 0..8 {
|
for i in 0..8 {
|
||||||
let rwh = wh * (1.0 - (i as f64 * 0.065)) / 2.0;
|
let rwh = wh * (1.0 - (i as f64 * 0.065)) / 2.0;
|
||||||
|
|
@ -135,6 +166,48 @@ fn calc_pos(point: [f64; 2], center: [f64; 2], wh: f64) -> Option<(i16, i16)> {
|
||||||
y = Some(i)
|
y = Some(i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if y == None {
|
||||||
|
let min = wh * (1.0 - ((8.0) * 0.065)) / 2.0;
|
||||||
|
if distance <= min {
|
||||||
|
y = Some(7);
|
||||||
|
} else {
|
||||||
|
y = Some(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
y.map(|y_val| (x, y_val))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn calc_pos_con(point: [f64; 2], center: [f64; 2], wh: f64) -> Option<(i16, i16)> {
|
||||||
|
let dx = point[0];
|
||||||
|
let dy = point[1];
|
||||||
|
let distance = (dx * dx + dy * dy).sqrt()*wh;
|
||||||
|
|
||||||
|
let angle = dy.atan2(dx);
|
||||||
|
let mut deg = angle * 30.0 / std::f64::consts::PI;
|
||||||
|
if deg < 0.0 {
|
||||||
|
deg += 60.0;
|
||||||
|
}
|
||||||
|
let mut x = deg as i16-15;
|
||||||
|
if x < 0 {
|
||||||
|
x += 60
|
||||||
|
}
|
||||||
|
let mut y: Option<i16> = None;
|
||||||
|
for i in 0..8 {
|
||||||
|
let rwh = wh * (1.0 - (i as f64 * 0.065)) / 2.0;
|
||||||
|
let rwe = wh * (1.0 - ((i as f64 + 1.0) * 0.065)) / 2.0;
|
||||||
|
if distance <= rwh && distance >= rwe {
|
||||||
|
y = Some(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if y == None {
|
||||||
|
let min = wh * (1.0 - ((8.0) * 0.065)) / 2.0;
|
||||||
|
if distance <= min {
|
||||||
|
y = Some(7);
|
||||||
|
} else {
|
||||||
|
y = Some(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
// }
|
// }
|
||||||
y.map(|y_val| (x, y_val))
|
y.map(|y_val| (x, y_val))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue