From 7381e6bf606dbf755a52e5edc1f8393d5a84ed66 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Sat, 30 Apr 2022 19:33:47 +0300 Subject: [PATCH] [VR Client] Use ObjectPlace packets when dropping items in VR --- apps/openmw/mwvr/vrinputmanager.cpp | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/apps/openmw/mwvr/vrinputmanager.cpp b/apps/openmw/mwvr/vrinputmanager.cpp index dd38c39ca..29caf1046 100644 --- a/apps/openmw/mwvr/vrinputmanager.cpp +++ b/apps/openmw/mwvr/vrinputmanager.cpp @@ -36,6 +36,18 @@ #include "../mwrender/renderingmanager.hpp" #include "../mwrender/camera.hpp" +/* + Start of tes3mp addition + + Include additional headers for multiplayer purposes +*/ +#include "../mwmp/Main.hpp" +#include "../mwmp/Networking.hpp" +#include "../mwmp/ObjectList.hpp" +/* + End of tes3mp addition +*/ + #include #include @@ -96,6 +108,32 @@ namespace MWVR dropped = world->dropObjectOnGround(world->getPlayerPtr(), item.mBase, count); dropped.getCellRef().setOwner(""); + /* + Start of tes3mp addition + + Send an ID_OBJECT_PLACE packet every time an object is dropped into the world from + the inventory screen + */ + mwmp::ObjectList* objectList = mwmp::Main::get().getNetworking()->getObjectList(); + objectList->reset(); + objectList->packetOrigin = mwmp::CLIENT_GAMEPLAY; + objectList->addObjectPlace(dropped, true); + objectList->sendObjectPlace(); + /* + End of tes3mp addition + */ + + /* + Start of tes3mp change (major) + + Instead of actually keeping this object as is, delete it after sending the packet + and wait for the server to send it back with a unique mpNum of its own + */ + MWBase::Environment::get().getWorld()->deleteObject(dropped); + /* + End of tes3mp change (major) + */ + return dropped; }