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.rs23
1 files changed, 15 insertions, 8 deletions
diff --git a/client/src/state.rs b/client/src/state.rs
index e59691a..560c8bd 100644
--- a/client/src/state.rs
+++ b/client/src/state.rs
@@ -41,6 +41,7 @@ pub struct State<'a> {
pub prefab_index_res_loaded: Option<Resource<PrefabIndex>>,
pub prefab_index_res: Option<Resource<PrefabIndex>>,
pub avatar_ob: Option<Object>,
+ pub last_position_tx: Instant,
}
pub struct InputState {
@@ -73,6 +74,7 @@ impl<'a> State<'a> {
prefab_index_res_loaded: None,
avatar_ob: None,
prefab_index: PrefabIndex::default().into(),
+ last_position_tx: Instant::now(),
})
}
pub fn draw(&mut self) {
@@ -146,9 +148,11 @@ impl<'a> State<'a> {
match &p {
Packet::PrefabIndex(res) => self.prefab_index_res = Some(res.to_owned()),
Packet::Sound(ob, data) => {
- if let Some(obdata) = self.tree.objects.get(ob) {
- self.audio
- .incoming_packet(ob.0, obdata.pos.into(), data.0.clone())
+ if Some(ob) != self.avatar_ob.as_ref() {
+ if let Some(obdata) = self.tree.objects.get(ob) {
+ self.audio
+ .incoming_packet(ob.0, obdata.pos.into(), data.0.clone())
+ }
}
}
_ => (),
@@ -169,11 +173,14 @@ 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(),
- ))?;
+ if self.last_position_tx.elapsed().as_secs_f32() > 0.1 {
+ self.network.packet_send.send(Packet::Position(
+ ob,
+ self.camera.position().into(),
+ self.camera.rotation().into(),
+ ))?;
+ self.last_position_tx = Instant::now();
+ }
while let Some(p) = self.audio.pop_output() {
self.network.packet_send.send(Packet::Sound(ob, Data(p)))?;
}