diff options
| -rw-r--r-- | crates/teleia/src/assets/meshes/square.obj | 15 | ||||
| -rw-r--r-- | crates/teleia/src/fig.rs | 8 | ||||
| -rw-r--r-- | crates/teleia/src/state.rs | 5 |
3 files changed, 27 insertions, 1 deletions
diff --git a/crates/teleia/src/assets/meshes/square.obj b/crates/teleia/src/assets/meshes/square.obj new file mode 100644 index 0000000..7328a6c --- /dev/null +++ b/crates/teleia/src/assets/meshes/square.obj @@ -0,0 +1,15 @@ +# Blender 3.6.2 +# www.blender.org +o Cube +v -1.000000 -1.000000 0.000000 +v 1.000000 -1.000000 0.000000 +v -1.000000 1.000000 0.000000 +v 1.000000 1.000000 0.000000 +vn -0.0000 -0.0000 -1.0000 +vt 0.0 1.0 +vt 1.0 0.0 +vt 0.0 0.0 +vt 1.0 1.0 +s 0 +f 3/1/1 2/2/1 1/3/1 +f 3/1/1 4/4/1 2/2/1 diff --git a/crates/teleia/src/fig.rs b/crates/teleia/src/fig.rs index bb5d579..a507ab4 100644 --- a/crates/teleia/src/fig.rs +++ b/crates/teleia/src/fig.rs @@ -72,6 +72,7 @@ pub struct BinaryClient { state: BinaryClientState, writer: std::net::TcpStream, reader: std::io::BufReader<std::net::TcpStream>, + blocking: bool, } impl BinaryClient { pub fn new(addr: &str, blocking: bool, subs: &[&[u8]]) -> Self { @@ -89,6 +90,7 @@ impl BinaryClient { state: BinaryClientState::PartialEventLength { buf_len: 0, buf: [0; 4] }, writer, reader, + blocking, } } fn write_length_prefixed(&mut self, buf: &[u8]) { @@ -97,9 +99,15 @@ impl BinaryClient { } pub fn publish(&mut self, ev: &[u8], data: &[u8]) { + if !self.blocking { + self.writer.set_nonblocking(false).expect("failed to set message bus socket nonblocking"); + } write!(self.writer, "p").expect("failed to send publish message to bus"); self.write_length_prefixed(ev); self.write_length_prefixed(data); + if !self.blocking { + self.writer.set_nonblocking(true).expect("failed to set message bus socket nonblocking"); + } } fn read(reader: &mut std::io::BufReader<std::net::TcpStream>, buf: &mut [u8]) -> Option<usize> { match reader.read(buf) { diff --git a/crates/teleia/src/state.rs b/crates/teleia/src/state.rs index 99e5e0b..95c63b7 100644 --- a/crates/teleia/src/state.rs +++ b/crates/teleia/src/state.rs @@ -4,7 +4,7 @@ use bimap::BiHashMap; use enum_map::{enum_map, Enum, EnumMap}; use serde::{Serialize, Deserialize}; -use crate::{audio, context, framebuffer, shader, utils}; +use crate::{audio, context, framebuffer, mesh, shader, utils}; const DELTA_TIME: f64 = 1.0 / 61.0; // todo @@ -176,6 +176,7 @@ pub struct State { pub screen: framebuffer::Framebuffer, pub render_framebuffer: framebuffer::Framebuffer, pub shader_upscale: shader::Shader, + pub mesh_square: mesh::Mesh, pub audio: Option<audio::Assets>, pub projection: glam::Mat4, @@ -247,6 +248,7 @@ impl State { include_str!("assets/shaders/scale/vert.glsl"), include_str!("assets/shaders/scale/frag.glsl"), ); + let mesh_square = mesh::Mesh::from_obj(ctx, include_bytes!("assets/meshes/square.obj")); let waker = std::sync::Arc::new(WinitWaker::new()); let cwaker = Box::leak(Box::new(waker.into())); @@ -271,6 +273,7 @@ impl State { screen, render_framebuffer, shader_upscale, + mesh_square, audio: None, projection: glam::Mat4::perspective_lh( |
