mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-04-25 19:36:51 +00:00
Conflicts: apps/openmw-mp/Networking.cpp apps/openmw-mp/Script/Functions/World.cpp apps/openmw-mp/Script/Functions/World.hpp apps/openmw-mp/processors/WorldProcessor.cpp apps/openmw-mp/processors/WorldProcessor.hpp apps/openmw-mp/processors/world/ProcessorContainer.hpp apps/openmw-mp/processors/world/ProcessorDoorState.hpp apps/openmw-mp/processors/world/ProcessorObjectDelete.hpp apps/openmw-mp/processors/world/ProcessorObjectLock.hpp apps/openmw-mp/processors/world/ProcessorObjectPlace.hpp apps/openmw-mp/processors/world/ProcessorObjectScale.hpp apps/openmw-mp/processors/world/ProcessorObjectSpawn.hpp apps/openmw-mp/processors/world/ProcessorObjectState.hpp apps/openmw-mp/processors/world/ProcessorObjectTrap.hpp apps/openmw/mwgui/container.cpp apps/openmw/mwmp/Networking.cpp apps/openmw/mwmp/ObjectList.cpp apps/openmw/mwmp/ObjectList.hpp apps/openmw/mwmp/processors/world/ProcessorContainer.hpp components/CMakeLists.txt components/openmw-mp/Base/BaseObject.hpp components/openmw-mp/Packets/Object/ObjectPacket.cpp components/openmw-mp/Packets/Object/PacketConsoleCommand.cpp components/openmw-mp/Packets/Object/PacketContainer.cpp components/openmw-mp/Packets/Object/PacketDoorState.hpp components/openmw-mp/Packets/Object/PacketMusicPlay.hpp components/openmw-mp/Packets/Object/PacketObjectAnimPlay.hpp components/openmw-mp/Packets/Object/PacketObjectLock.hpp components/openmw-mp/Packets/Object/PacketObjectMove.hpp components/openmw-mp/Packets/Object/PacketObjectPlace.hpp components/openmw-mp/Packets/Object/PacketObjectRotate.hpp components/openmw-mp/Packets/Object/PacketObjectScale.hpp components/openmw-mp/Packets/Object/PacketObjectSpawn.hpp components/openmw-mp/Packets/Object/PacketObjectState.hpp components/openmw-mp/Packets/Object/PacketObjectTrap.hpp components/openmw-mp/Packets/Object/PacketScriptGlobalShort.hpp components/openmw-mp/Packets/Object/PacketScriptLocalFloat.hpp components/openmw-mp/Packets/Object/PacketScriptLocalShort.hpp components/openmw-mp/Packets/Object/PacketScriptMemberShort.hpp components/openmw-mp/Packets/Object/PacketVideoPlay.hpp
72 lines
1.5 KiB
C++
72 lines
1.5 KiB
C++
#include <components/openmw-mp/NetworkMessages.hpp>
|
|
#include <PacketPriority.h>
|
|
#include <RakPeer.h>
|
|
#include "ObjectPacket.hpp"
|
|
|
|
using namespace mwmp;
|
|
|
|
ObjectPacket::ObjectPacket(RakNet::RakPeerInterface *peer) : BasePacket(peer)
|
|
{
|
|
hasCellData = false;
|
|
packetID = 0;
|
|
priority = HIGH_PRIORITY;
|
|
reliability = RELIABLE_ORDERED;
|
|
orderChannel = CHANNEL_WORLDEVENT;
|
|
this->peer = peer;
|
|
}
|
|
|
|
void ObjectPacket::setObjectList(BaseObjectList *objectList)
|
|
{
|
|
this->objectList = objectList;
|
|
guid = objectList->guid;
|
|
}
|
|
|
|
void ObjectPacket::Packet(RakNet::BitStream *bs, bool send)
|
|
{
|
|
if (!PacketHeader(bs, send))
|
|
return;
|
|
|
|
for (auto &&baseObject : objectList->baseObjects)
|
|
{
|
|
Object(baseObject, send);
|
|
}
|
|
}
|
|
|
|
bool ObjectPacket::PacketHeader(RakNet::BitStream *bs, bool send)
|
|
{
|
|
BasePacket::Packet(bs, send);
|
|
|
|
uint32_t baseObjectCount;
|
|
|
|
if (send)
|
|
baseObjectCount = (uint32_t) (objectList->baseObjects.size());
|
|
|
|
RW(baseObjectCount, send);
|
|
|
|
if (baseObjectCount > maxObjects)
|
|
{
|
|
objectList->isValid = false;
|
|
return false;
|
|
}
|
|
|
|
if (!send)
|
|
{
|
|
objectList->baseObjects.clear();
|
|
objectList->baseObjects.resize(baseObjectCount);
|
|
}
|
|
|
|
if (hasCellData)
|
|
{
|
|
RW(objectList->cell.mData, send, true);
|
|
RW(objectList->cell.mName, send, true);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void ObjectPacket::Object(BaseObject &baseObject, bool send)
|
|
{
|
|
RW(baseObject.refId, send);
|
|
RW(baseObject.refNumIndex, send);
|
|
RW(baseObject.mpNum, send);
|
|
}
|