From e9e5df5ff1e09356bf2ad0bcc82bbaee6a2acc0d Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 11 Jan 2025 00:24:12 +0100 Subject: things --- client/src/state.rs | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'client/src/state.rs') diff --git a/client/src/state.rs b/client/src/state.rs index 5176ca1..cb7316d 100644 --- a/client/src/state.rs +++ b/client/src/state.rs @@ -20,7 +20,7 @@ use glam::{Vec2, Vec3}; use log::{info, warn}; use std::{net::TcpStream, sync::Arc, time::Instant}; use weareshared::{ - packets::{Packet, Resource}, + packets::{Object, Packet, Resource}, resources::PrefabIndex, store::ResourceStore, tree::SceneTree, @@ -38,6 +38,7 @@ pub struct State<'a> { pub prefab_index: Arc, pub prefab_index_res_loaded: Option>, pub prefab_index_res: Option>, + pub avatar_ob: Option, } pub struct InputState { @@ -67,6 +68,7 @@ impl<'a> State<'a> { }, prefab_index_res: None, prefab_index_res_loaded: None, + avatar_ob: None, prefab_index: PrefabIndex::default().into(), }) } @@ -103,6 +105,7 @@ impl<'a> State<'a> { return; } let pi = self.prefab_index.clone(); + let net = self.network.clone(); self.renderer .ui_renderer .add_surface(self.camera.new_ui_affine(), move |ctx| { @@ -110,10 +113,15 @@ impl<'a> State<'a> { egui::Window::new("Prefab Index") .open(&mut open) .show(ctx, |ui| { - for (key, _res) in &pi.0 { + for (key, res) in &pi.0 { ui.horizontal(|ui| { ui.label(key); - if ui.button("Add").clicked() {} + if ui.button("Add").clicked() { + info!("spawn {res}"); + net.packet_send + .send(Packet::Add(Object::new(), res.clone())) + .unwrap(); + } }); } }); @@ -150,6 +158,27 @@ impl<'a> State<'a> { } } + if let Some(ob) = self.avatar_ob { + self.network + .packet_send + .send(Packet::Position( + ob, + self.camera.position().into(), + self.camera.rotation().into(), + )) + .unwrap(); + } else { + if let Some(res) = self.prefab_index.0.get("avatar_test") { + info!("found avatar resource {res}"); + let ob = Object::new(); + self.network + .packet_send + .send(Packet::Add(ob, res.to_owned())) + .unwrap(); + self.avatar_ob = Some(ob) + } + } + self.input_state.egui_events.clear(); Ok(()) } -- cgit v1.2.3-70-g09d2