diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-11 00:24:12 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-11 00:24:12 +0100 |
commit | e9e5df5ff1e09356bf2ad0bcc82bbaee6a2acc0d (patch) | |
tree | be3ed59dc7a82ab7d973b7fa88930d7f69c76c49 /client/src/state.rs | |
parent | 2c8360de342872f65bdef037f3fb5d598b8f26a0 (diff) | |
download | weareserver-e9e5df5ff1e09356bf2ad0bcc82bbaee6a2acc0d.tar weareserver-e9e5df5ff1e09356bf2ad0bcc82bbaee6a2acc0d.tar.bz2 weareserver-e9e5df5ff1e09356bf2ad0bcc82bbaee6a2acc0d.tar.zst |
things
Diffstat (limited to 'client/src/state.rs')
-rw-r--r-- | client/src/state.rs | 35 |
1 files changed, 32 insertions, 3 deletions
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<PrefabIndex>, pub prefab_index_res_loaded: Option<Resource<PrefabIndex>>, pub prefab_index_res: Option<Resource<PrefabIndex>>, + pub avatar_ob: Option<Object>, } 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(()) } |