diff --git a/apps/openmw-mp/Networking.cpp b/apps/openmw-mp/Networking.cpp index 37e3f94bf..f0c83ef23 100644 --- a/apps/openmw-mp/Networking.cpp +++ b/apps/openmw-mp/Networking.cpp @@ -391,6 +391,11 @@ void Networking::ProcessWorldPacket(RakNet::Packet *packet) player->Npc()->mName.c_str()); myPacket->Read(event); + + LOG_APPEND(Log::LOG_WARN, "- %s", event->CellRef()->mRefID.c_str()); + + LOG_APPEND(Log::LOG_WARN, "- %i", event->CellRef()->mRefNum); + myPacket->Send(event, true); break; diff --git a/apps/openmw/mwmp/Networking.cpp b/apps/openmw/mwmp/Networking.cpp index bc0680a09..4ff5d2491 100644 --- a/apps/openmw/mwmp/Networking.cpp +++ b/apps/openmw/mwmp/Networking.cpp @@ -633,10 +633,16 @@ void Networking::ProcessWorldPacket(RakNet::Packet *packet) WorldPacket *myPacket = worldController.GetPacket(packet->data[0]); WorldEvent *event = new WorldEvent(id); + MWWorld::CellStore *ptrCellStore = MWBase::Environment::get().getWorld()->getPlayerPtr().getCell(); + switch (packet->data[0]) { case ID_WORLD_OBJECT_CREATION: { + MWWorld::ManualRef ref(MWBase::Environment::get().getWorld()->getStore(), event->CellRef()->mRefID, 1); + + MWBase::Environment::get().getWorld()->placeObject(ref.getPtr(), ptrCellStore, event->CellRef()->mPos); + break; } case ID_WORLD_OBJECT_REMOVAL: @@ -648,6 +654,10 @@ void Networking::ProcessWorldPacket(RakNet::Packet *packet) event->CellRef()->mRefID.c_str(), event->CellRef()->mRefNum); + //MWWorld::Ptr object = ptrCellStore->search(event->CellRef()->mRefID); + //MWBase::Environment::get().getWorld()->deleteObject(object); + + break; } default: diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index d7fd3281f..567351ef8 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -1108,10 +1108,16 @@ namespace MWWorld { // Added by tes3mp mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent(); + event->CellRef()->mRefID = ptr.getCellRef().getRefId(); event->CellRef()->mRefNum = ptr.getCellRef().getRefNum(); mwmp::Main::get().getNetworking()->GetWorldPacket(ID_WORLD_OBJECT_REMOVAL)->Send(event); + printf("Sending ID_WORLD_OBJECT_REMOVAL about\n%s\n%s\n%i\n", + ptr.getCellRef().getRefId().c_str(), + event->CellRef()->mRefID.c_str(), + event->CellRef()->mRefNum); + mWorldScene->removeObjectFromScene (ptr); mLocalScripts.remove (ptr); removeContainerScripts (ptr);