summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/teleia/src/assets/meshes/square.obj15
-rw-r--r--crates/teleia/src/fig.rs8
-rw-r--r--crates/teleia/src/state.rs5
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(