From 433a69a58859d9efe430ac8aa0e5252949706488 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Mon, 31 Dec 2018 04:36:59 +0200 Subject: [PATCH] [Client] Send all data for newly initialized LocalActors at least once --- apps/openmw/mwmp/Cell.cpp | 4 +++- apps/openmw/mwmp/LocalActor.cpp | 3 +++ apps/openmw/mwmp/LocalActor.hpp | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwmp/Cell.cpp b/apps/openmw/mwmp/Cell.cpp index 9fdef9915..ddb3a0dad 100644 --- a/apps/openmw/mwmp/Cell.cpp +++ b/apps/openmw/mwmp/Cell.cpp @@ -82,8 +82,10 @@ void Cell::updateLocal(bool forceUpdate) } else { + // Forcibly update this local actor if its data has never been sent before; + // otherwise, use the current forceUpdate value if (actor->getPtr().getRefData().isEnabled()) - actor->update(forceUpdate); + actor->update(actor->hasSentData ? forceUpdate : true); ++it; } diff --git a/apps/openmw/mwmp/LocalActor.cpp b/apps/openmw/mwmp/LocalActor.cpp index 5fbc129a8..27c4f6088 100644 --- a/apps/openmw/mwmp/LocalActor.cpp +++ b/apps/openmw/mwmp/LocalActor.cpp @@ -22,6 +22,7 @@ using namespace std; LocalActor::LocalActor() { + hasSentData = false; posWasChanged = false; equipmentChanged = false; @@ -61,6 +62,8 @@ void LocalActor::update(bool forceUpdate) updateSpeech(); updateAttack(); } + + hasSentData = true; } void LocalActor::updateCell() diff --git a/apps/openmw/mwmp/LocalActor.hpp b/apps/openmw/mwmp/LocalActor.hpp index 35ba5f407..2994d4ca5 100644 --- a/apps/openmw/mwmp/LocalActor.hpp +++ b/apps/openmw/mwmp/LocalActor.hpp @@ -28,6 +28,7 @@ namespace mwmp MWWorld::Ptr getPtr(); void setPtr(const MWWorld::Ptr& newPtr); + bool hasSentData; bool wasDead; private: