diff --git a/Cargo.lock b/Cargo.lock index 3cc0878153..46ea56fcca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -353,12 +353,6 @@ dependencies = [ "syn 2.0.29", ] -[[package]] -name = "atom" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9ff149ed9780025acfdb36862d35b28856bb693ceb451259a7164442f22fdc3" - [[package]] name = "atomic-polyfill" version = "0.1.11" @@ -2726,11 +2720,10 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hibitset" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93a1bb8316a44459a7d14253c4d28dd7395cbd23cc04a68c46e851b8e46d64b1" +checksum = "f3ede5cfa60c958e60330d65163adbc4211e15a2653ad80eb0cce878de120121" dependencies = [ - "atom", "rayon", ] @@ -3387,6 +3380,22 @@ dependencies = [ "libc", ] +[[package]] +name = "macro_rules_attribute" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf0c9b980bf4f3a37fd7b1c066941dd1b1d0152ce6ee6e8fe8c49b9f6810d862" +dependencies = [ + "macro_rules_attribute-proc_macro", + "paste", +] + +[[package]] +name = "macro_rules_attribute-proc_macro" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58093314a45e00c77d5c508f76e77c3396afbbc0d01506e7fae47b018bac2b1d" + [[package]] name = "malloc_buf" version = "0.0.6" @@ -3814,6 +3823,27 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "nougat" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b57b9ced431322f054fc673f1d3c7fa52d80efd9df74ad2fc759f044742510" +dependencies = [ + "macro_rules_attribute", + "nougat-proc_macros", +] + +[[package]] +name = "nougat-proc_macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c84f77a45e99a2f9b492695d99e1c23844619caa5f3e57647cffacad773ca257" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", +] + [[package]] name = "ntapi" version = "0.3.7" @@ -5639,12 +5669,13 @@ checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "shred" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6aa4148ce950f367ede79bff6bb04bbf3c31317a1291315078ef60c080821a1" +checksum = "dc6b2cd1ccb08cf2b25d75c936e0cc9c8cb93c39a83814956da32653236338c0" dependencies = [ "ahash 0.7.6", "arrayvec 0.7.4", + "atomic_refcell", "rayon", "shred-derive", "smallvec", @@ -5815,14 +5846,15 @@ dependencies = [ [[package]] name = "specs" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad2e89cb8aba27bebf48a5a47b4889e7b317a08884d92cc36109d58992d41325" +checksum = "a60eabdfd5a80e458c3e7bcc9f1076d6ce3cc8ddb71d69691f00fc0de735a635" dependencies = [ "ahash 0.7.6", "crossbeam-queue", "hibitset", "log", + "nougat", "rayon", "serde", "shred", diff --git a/Cargo.toml b/Cargo.toml index ceb2aa77af..4007d6a084 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -149,7 +149,7 @@ serde = { version = "1.0.118", features = ["derive"] } serde_json = { version = "1.0.50" } ron = { version = "0.8", default-features = false} -specs = { version = "0.19", features = ["nightly"] } +specs = { version = "0.20", features = ["nightly"] } image = { version = "0.24", default-features = false, features = ["png"] } rayon = { version = "1.5" } diff --git a/client/src/lib.rs b/client/src/lib.rs index 122ec37837..f19d253afa 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -10,7 +10,7 @@ pub use crate::error::Error; pub use authc::AuthClientError; pub use common_net::msg::ServerInfo; pub use specs::{ - join::Join, Builder, DispatcherBuilder, Entity as EcsEntity, ReadStorage, World, WorldExt, + Builder, DispatcherBuilder, Entity as EcsEntity, Join, LendJoin, ReadStorage, World, WorldExt, }; use crate::addr::ConnectionArgs; diff --git a/common/net/src/sync/packet.rs b/common/net/src/sync/packet.rs index 084f602581..96f1cd5e6c 100644 --- a/common/net/src/sync/packet.rs +++ b/common/net/src/sync/packet.rs @@ -1,7 +1,7 @@ use super::track::UpdateTracker; use common::{resources::Time, uid::Uid}; use serde::{de::DeserializeOwned, Deserialize, Serialize}; -use specs::{Component, Entity, Join, ReadStorage, World, WorldExt}; +use specs::{storage::AccessMut, Component, Entity, Join, ReadStorage, World, WorldExt}; use std::{ convert::{TryFrom, TryInto}, fmt::Debug, @@ -33,7 +33,7 @@ pub fn handle_insert(comp: C, entity: Entity, world: &World) { /// Useful for implementing CompPacket trait pub fn handle_modify(comp: C, entity: Entity, world: &World) { if let Some(mut c) = world.write_storage::().get_mut(entity) { - *c = comp + *c.access_mut() = comp } else { error!( ?comp, @@ -77,7 +77,7 @@ pub fn handle_interp_modify( ) { if let Some(mut interp_data) = world.write_storage::().get_mut(entity) { let time = world.read_resource::