fix: deduplicate entity creates

This commit is contained in:
cha0s 2019-06-05 20:11:21 -05:00
parent 0cedf1add9
commit a3cbe141f9

View File

@ -43,6 +43,25 @@ export class Informed extends decorate(Trait) {
);
}
deduplicateEntityCreatePackets(packets) {
const created = new Map();
return packets.filter((packet) => {
const entity = packet.entity;
if (!entity) {
return true;
}
// Only care about creates.
if (!(packet instanceof EntityCreatePacket)) {
return true;
}
if (created.has(entity)) {
return false;
}
created.set(entity, true);
return true;
});
}
filterInvisibleEntityPackets(packets) {
return packets.filter((packet) => {
const entity = packet.entity;
@ -267,6 +286,8 @@ export class Informed extends decorate(Trait) {
packets,
outOfRangeEntities
);
// Deduplicate entity creates.
packets = this.deduplicateEntityCreatePackets(packets);
// Filter known creates.
packets = this.filterKnownEntityCreatePackets(packets);
// Inject create packets.