1
0
Fork 0
mirror of https://github.com/demostf/demo.js synced 2026-06-04 00:54:14 +02:00

save serial

This commit is contained in:
Robin Appelman 2017-02-17 23:29:29 +01:00
commit 844d387a90
2 changed files with 7 additions and 4 deletions

View file

@ -16,6 +16,7 @@ export class PacketEntity {
entityIndex: number; entityIndex: number;
props: SendProp[]; props: SendProp[];
inPVS: boolean; inPVS: boolean;
serialNumber?: number;
constructor(serverClass: ServerClass, entityIndex: number, pvs: PVS) { constructor(serverClass: ServerClass, entityIndex: number, pvs: PVS) {
this.serverClass = serverClass; this.serverClass = serverClass;

View file

@ -20,11 +20,12 @@ function readPVSType(stream: BitStream): PVS {
function readEnterPVS(stream: BitStream, entityId: number, match: Match): PacketEntity { function readEnterPVS(stream: BitStream, entityId: number, match: Match): PacketEntity {
// https://github.com/PazerOP/DemoLib/blob/5f9467650f942a4a70f9ec689eadcd3e0a051956/TF2Net/NetMessages/NetPacketEntitiesMessage.cs#L198 // https://github.com/PazerOP/DemoLib/blob/5f9467650f942a4a70f9ec689eadcd3e0a051956/TF2Net/NetMessages/NetPacketEntitiesMessage.cs#L198
const serverClass = match.serverClasses[stream.readBits(match.classBits)]; const serverClass = match.serverClasses[stream.readBits(match.classBits)];
stream.readBits(10); // unused serial number const serial = stream.readBits(10); // unused serial number
if (match.baseLineCache[serverClass.id]) { if (match.baseLineCache[serverClass.id]) {
const result = match.baseLineCache[serverClass.id].clone(); const result = match.baseLineCache[serverClass.id].clone();
result.entityIndex = entityId; result.entityIndex = entityId;
result.serialNumber = serial;
return result; return result;
} else { } else {
const entity = new PacketEntity(serverClass, entityId, PVS.ENTER); const entity = new PacketEntity(serverClass, entityId, PVS.ENTER);
@ -39,9 +40,10 @@ function readEnterPVS(stream: BitStream, entityId: number, match: Match): Packet
match.baseLineCache[serverClass.id] = entity.clone(); match.baseLineCache[serverClass.id] = entity.clone();
if (staticBaseLine.bitsLeft > 7) { if (staticBaseLine.bitsLeft > 7) {
// console.log(staticBaseLine.length, staticBaseLine.index); // console.log(staticBaseLine.length, staticBaseLine.index);
// throw new Error('Unexpected data left at the end of staticBaseline, ' + staticBaseLine.bitsLeft + ' bits left'); throw new Error('Unexpected data left at the end of staticBaseline, ' + staticBaseLine.bitsLeft + ' bits left');
} }
} }
entity.serialNumber = serial;
return entity; return entity;
} }
} }