Remove demo snap buffer and mem copy

Adding the snap to the demo is the last usage of `pTmpBuffer3`
all prior usages of it copy the data if needed.
So we can edit it in place. No need to copy it into a new buffer.
This commit is contained in:
ChillerDragon 2024-04-04 07:37:56 +08:00
parent a9b254b0e2
commit c5fb857893
3 changed files with 5 additions and 7 deletions

View file

@ -11,6 +11,7 @@
#include <game/generated/protocol.h>
#include <engine/friends.h>
#include <engine/shared/snapshot.h>
#include <functional>
struct SWarning;
@ -346,7 +347,7 @@ public:
virtual CNetObjHandler *GetNetObjHandler() = 0;
};
void SnapshotRemoveExtraProjectileInfo(unsigned char *pData);
void SnapshotRemoveExtraProjectileInfo(CSnapshot *pSnap);
extern IGameClient *CreateGameClient();
#endif

View file

@ -1821,9 +1821,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)
if(!Dummy)
{
// for antiping: if the projectile netobjects from the server contains extra data, this is removed and the original content restored before recording demo
unsigned char aExtraInfoRemoved[CSnapshot::MAX_SIZE];
mem_copy(aExtraInfoRemoved, pTmpBuffer3, SnapSize);
SnapshotRemoveExtraProjectileInfo(aExtraInfoRemoved);
SnapshotRemoveExtraProjectileInfo(pTmpBuffer3);
// add snapshot to demo
for(auto &DemoRecorder : m_aDemoRecorder)
@ -1831,7 +1829,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)
if(DemoRecorder.IsRecording())
{
// write snapshot
DemoRecorder.RecordSnapshot(GameTick, aExtraInfoRemoved, SnapSize);
DemoRecorder.RecordSnapshot(GameTick, pTmpBuffer3, SnapSize);
}
}
}

View file

@ -104,9 +104,8 @@ CProjectileData ExtractProjectileInfoDDNet(const CNetObj_DDNetProjectile *pProj)
return Result;
}
void SnapshotRemoveExtraProjectileInfo(unsigned char *pData)
void SnapshotRemoveExtraProjectileInfo(CSnapshot *pSnap)
{
CSnapshot *pSnap = (CSnapshot *)pData;
for(int Index = 0; Index < pSnap->NumItems(); Index++)
{
const CSnapshotItem *pItem = pSnap->GetItem(Index);