From 37f4825392902deec07e6bd471580f03ae394240 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Thu, 14 Aug 2025 22:29:41 -0400 Subject: Update --- crates/teleia/src/assets/meshes/square.obj | 15 +++++++++++++++ crates/teleia/src/fig.rs | 8 ++++++++ crates/teleia/src/state.rs | 5 ++++- 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 crates/teleia/src/assets/meshes/square.obj (limited to 'crates') 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, + 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, buf: &mut [u8]) -> Option { 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, 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( -- cgit v1.2.3