From a3cbe141f94866416610f7929049786a23e3760c Mon Sep 17 00:00:00 2001 From: cha0s Date: Wed, 5 Jun 2019 20:11:21 -0500 Subject: [PATCH] fix: deduplicate entity creates --- server/traits/informed.trait.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/server/traits/informed.trait.js b/server/traits/informed.trait.js index 9886d2f..d58bcec 100644 --- a/server/traits/informed.trait.js +++ b/server/traits/informed.trait.js @@ -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.