From f6db7d4fc5ef82921019bd93eb0f435e081c15d4 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Wed, 24 Apr 2019 00:52:11 +0300 Subject: [PATCH] [Client] Avoid sending repeated ObjectDelete packets about an object --- apps/openmw/mwscript/miscextensions.cpp | 8 ++++++-- apps/openmw/mwworld/refdata.hpp | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwscript/miscextensions.cpp b/apps/openmw/mwscript/miscextensions.cpp index 43fd4343c..5ab1cc98c 100644 --- a/apps/openmw/mwscript/miscextensions.cpp +++ b/apps/openmw/mwscript/miscextensions.cpp @@ -778,10 +778,14 @@ namespace MWScript Start of tes3mp addition Send an ID_OBJECT_DELETE packet every time an object is deleted - through a script + through a script, as long as we haven't already communicated + a deletion for it */ - if (mwmp::Main::get().getLocalPlayer()->isLoggedIn()) + if (mwmp::Main::get().getLocalPlayer()->isLoggedIn() && + ptr.getRefData().getLastCommunicatedState() != MWWorld::RefData::StateCommunication::Deleted) { + ptr.getRefData().setLastCommunicatedState(MWWorld::RefData::StateCommunication::Deleted); + mwmp::ObjectList *objectList = mwmp::Main::get().getNetworking()->getObjectList(); objectList->reset(); objectList->packetOrigin = ScriptController::getPacketOriginFromContextType(runtime.getContext().getContextType()); diff --git a/apps/openmw/mwworld/refdata.hpp b/apps/openmw/mwworld/refdata.hpp index f857caf6c..b8fcf09c0 100644 --- a/apps/openmw/mwworld/refdata.hpp +++ b/apps/openmw/mwworld/refdata.hpp @@ -150,7 +150,8 @@ namespace MWWorld { None = 0, Enabled = 1, - Disabled = 2 + Disabled = 2, + Deleted = 3 }; private: