summaryrefslogtreecommitdiff
path: root/shared
diff options
context:
space:
mode:
Diffstat (limited to 'shared')
-rw-r--r--shared/src/helper.rs14
-rw-r--r--shared/src/lib.rs1
-rw-r--r--shared/src/packets.rs8
-rw-r--r--shared/src/resources.rs4
-rw-r--r--shared/src/store.rs4
-rw-r--r--shared/src/tree.rs45
6 files changed, 39 insertions, 37 deletions
diff --git a/shared/src/helper.rs b/shared/src/helper.rs
index 3ae7c37..366ea52 100644
--- a/shared/src/helper.rs
+++ b/shared/src/helper.rs
@@ -27,7 +27,7 @@ pub trait ReadWrite: Sized {
fn write(&self, w: &mut dyn Write) -> Result<()>;
fn read(r: &mut dyn Read) -> Result<Self>;
- fn write_alloc<'a>(&'a self) -> Cow<'a, [u8]> {
+ fn write_alloc(&self) -> Cow<'_, [u8]> {
let mut buf = Vec::new();
self.write(&mut buf).unwrap();
Cow::Owned(buf)
@@ -58,7 +58,7 @@ impl ReadWrite for u32 {
}
impl ReadWrite for Vec<u8> {
fn write(&self, w: &mut dyn Write) -> Result<()> {
- w.write_all(&self)?;
+ w.write_all(self)?;
Ok(())
}
fn read(r: &mut dyn Read) -> Result<Self> {
@@ -67,9 +67,9 @@ impl ReadWrite for Vec<u8> {
Ok(buf)
}
}
-impl<'a> ReadWrite for Cow<'a, [u8]> {
+impl ReadWrite for Cow<'_, [u8]> {
fn write(&self, w: &mut dyn Write) -> Result<()> {
- w.write_all(&self)?;
+ w.write_all(self)?;
Ok(())
}
fn read(r: &mut dyn Read) -> Result<Self> {
@@ -77,10 +77,10 @@ impl<'a> ReadWrite for Cow<'a, [u8]> {
r.read_to_end(&mut buf)?;
Ok(Cow::Owned(buf))
}
- fn write_alloc<'b>(&'b self) -> Cow<'b, [u8]> {
+ fn write_alloc(&self) -> Cow<'_, [u8]> {
match self {
Cow::Borrowed(x) => Cow::Borrowed(x),
- Cow::Owned(x) => Cow::Borrowed(&x),
+ Cow::Owned(x) => Cow::Borrowed(x),
}
}
}
@@ -307,7 +307,7 @@ impl ReadWrite for Data {
impl ReadWrite for Message {
fn write(&self, w: &mut dyn Write) -> Result<()> {
w.write_all(&(self.0.len() as u32).to_be_bytes())?;
- w.write_all(&self.0.as_bytes())?;
+ w.write_all(self.0.as_bytes())?;
Ok(())
}
fn read(r: &mut dyn Read) -> Result<Self> {
diff --git a/shared/src/lib.rs b/shared/src/lib.rs
index e5cf666..e6b296e 100644
--- a/shared/src/lib.rs
+++ b/shared/src/lib.rs
@@ -20,6 +20,7 @@
debug_closure_helpers,
string_from_utf8_lossy_owned
)]
+#![allow(clippy::unit_arg, clippy::type_complexity)]
pub mod helper;
pub mod packets;
diff --git a/shared/src/packets.rs b/shared/src/packets.rs
index a5c017d..dad09ce 100644
--- a/shared/src/packets.rs
+++ b/shared/src/packets.rs
@@ -72,6 +72,11 @@ impl Object {
Self(rand::random())
}
}
+impl Default for Object {
+ fn default() -> Self {
+ Self::new()
+ }
+}
impl Packet {
fn serialize_inner(&self, w: &mut impl Write) -> Result<()> {
match self {
@@ -222,3 +227,6 @@ impl Display for Object {
.finish()
}
}
+impl Object {
+ pub const ROOT: Object = Object(0);
+}
diff --git a/shared/src/resources.rs b/shared/src/resources.rs
index 6c71adc..2c94d05 100644
--- a/shared/src/resources.rs
+++ b/shared/src/resources.rs
@@ -382,14 +382,14 @@ fn write_kv(w: &mut dyn Write, key: &[u8], value: &[u8]) -> Result<()> {
Ok(())
}
-impl<'a> ReadWrite for Image<'a> {
+impl ReadWrite for Image<'_> {
fn write(&self, w: &mut dyn Write) -> Result<()> {
self.0.write(w)
}
fn read(r: &mut dyn Read) -> Result<Self> {
Ok(Self(<Vec<u8> as ReadWrite>::read(r)?.into()))
}
- fn write_alloc<'b>(&'b self) -> Cow<'b, [u8]> {
+ fn write_alloc(&self) -> Cow<'_, [u8]> {
self.0.write_alloc()
}
}
diff --git a/shared/src/store.rs b/shared/src/store.rs
index ddcee2c..b0dbe45 100644
--- a/shared/src/store.rs
+++ b/shared/src/store.rs
@@ -88,7 +88,7 @@ impl ResourceStore {
}
ResourceStore::Memory(map) => Ok(map.lock().unwrap().get(&key).map(|x| x.to_vec())),
ResourceStore::Filesystem(root) => {
- let path = fs_cache_path(&root, key);
+ let path = fs_cache_path(root, key);
if path.exists() {
let mut buf = Vec::new();
File::open(path)?.read_to_end(&mut buf)?;
@@ -113,7 +113,7 @@ impl ResourceStore {
map.lock().unwrap().insert(key, value.to_vec());
}
ResourceStore::Filesystem(root) => {
- let path = fs_cache_path(&root, key);
+ let path = fs_cache_path(root, key);
if !path.exists() {
let path_temp = path.with_extension("part");
File::create(&path_temp)?.write_all(value)?;
diff --git a/shared/src/tree.rs b/shared/src/tree.rs
index a0bbf43..72e4c24 100644
--- a/shared/src/tree.rs
+++ b/shared/src/tree.rs
@@ -22,9 +22,11 @@ use glam::Vec3A;
use log::warn;
use std::collections::{BTreeSet, HashMap};
+#[derive(Default)]
pub struct SceneTree {
pub objects: HashMap<Object, ObjectData>,
}
+
pub struct ObjectData {
pub pos: Vec3A,
pub rot: Vec3A,
@@ -33,13 +35,7 @@ pub struct ObjectData {
pub pose: Vec<f32>,
pub res: Resource<Prefab>,
}
-impl Default for SceneTree {
- fn default() -> Self {
- Self {
- objects: Default::default(),
- }
- }
-}
+
impl SceneTree {
pub fn packet(&mut self, p: &Packet) {
match p {
@@ -50,13 +46,13 @@ impl SceneTree {
self.remove_reparent(*object, &mut ());
}
Packet::Position(object, pos, rot) => {
- if let Some(o) = self.objects.get_mut(&object) {
+ if let Some(o) = self.objects.get_mut(object) {
o.pos = *pos;
o.rot = *rot;
}
}
Packet::Pose(object, pose) => {
- if let Some(o) = self.objects.get_mut(&object) {
+ if let Some(o) = self.objects.get_mut(object) {
o.pose = pose.to_vec();
}
}
@@ -84,7 +80,7 @@ impl SceneTree {
true
} else {
let parent = tree.objects[&o].parent;
- if parent == o {
+ if parent == Object::ROOT {
false
} else {
check_parent_loop(tree, parent, test)
@@ -95,7 +91,7 @@ impl SceneTree {
warn!("reparent of missing objects");
return;
}
- if check_parent_loop(&self, parent, child) {
+ if check_parent_loop(self, parent, child) {
warn!("cyclic parenting prevented");
return;
}
@@ -131,22 +127,19 @@ impl SceneTree {
}
pub fn prime_client(&self) -> impl Iterator<Item = Packet> {
- self.objects
- .iter()
- .map(|(object, data)| {
- [
- Packet::Add(*object, data.res.clone()),
- Packet::Parent(*object, data.parent),
- Packet::Position(*object, data.pos, data.rot),
- ]
- .into_iter()
- .chain(if data.pose.is_empty() {
- None
- } else {
- Some(Packet::Pose(*object, data.pose.clone()))
- })
+ self.objects.iter().flat_map(|(object, data)| {
+ [
+ Packet::Add(*object, data.res.clone()),
+ Packet::Parent(*object, data.parent),
+ Packet::Position(*object, data.pos, data.rot),
+ ]
+ .into_iter()
+ .chain(if data.pose.is_empty() {
+ None
+ } else {
+ Some(Packet::Pose(*object, data.pose.clone()))
})
- .flatten()
+ })
}
}