From 318ae962fd5fc61a1e908345f0ff8839f1c7c867 Mon Sep 17 00:00:00 2001 From: Avi Weinstock Date: Fri, 19 Mar 2021 19:02:39 -0400 Subject: [PATCH] Set PlayerEntity in `Client::clean_state`. This fixes several issues where interpolation would kick in after changing characters, causing the player to be locked in place or shoot into the sky on respawn or teleport. --- client/src/lib.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/client/src/lib.rs b/client/src/lib.rs index 1edebd7015..3f47bf8a1f 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -1808,7 +1808,13 @@ impl Client { Ok(frontend_events) } - pub fn entity(&self) -> EcsEntity { self.entity } + pub fn entity(&self) -> EcsEntity { + debug_assert_eq!( + self.state.ecs().read_resource::().0, + Some(self.entity) + ); + self.entity + } pub fn uid(&self) -> Option { self.state.read_component_copied(self.entity) } @@ -1891,6 +1897,7 @@ impl Client { .allocate(entity_builder.entity, Some(client_uid)); self.entity = entity_builder.with(uid).build(); + self.state.ecs().write_resource::().0 = Some(self.entity); } /// Change player alias to "You" if client belongs to matching player