summaryrefslogtreecommitdiff
path: root/client/src/state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/state.rs')
-rw-r--r--client/src/state.rs35
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(())
}