From 042be3776612b90caaac2818bac9a9030cc4f940 Mon Sep 17 00:00:00 2001 From: Wofsauge Date: Mon, 14 Jun 2021 19:22:03 +0200 Subject: [PATCH] Improved performance when a lot of effects are on screen --- eid_api.lua | 3 +++ main.lua | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/eid_api.lua b/eid_api.lua index 9b2766c8..4228f18d 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -166,6 +166,9 @@ end function EID:addEntity(id, variant, subtype, entityName, description, language) subtype = subtype or nil language = language or "en_us" + if id == EntityType.ENTITY_EFFECT then + EID.effectList[variant] = true + end EID.descriptions[language].custom[id .. "." .. variant .. "." .. subtype] = { subtype, entityName, diff --git a/main.lua b/main.lua index 73a2299c..23df3107 100644 --- a/main.lua +++ b/main.lua @@ -24,6 +24,7 @@ EID.lastDescriptionEntity = nil EID.lineHeight = 11 EID.sacrificeCounter = {} EID.itemConfig = Isaac.GetItemConfig() +EID.effectList = {["76"] = true} -- Sprite inits EID.IconSprite = Sprite() @@ -501,8 +502,12 @@ local function onRender(t) EID.lastDescriptionEntity = nil EID.lastDist = 10000 local searchGroups = {} - searchGroups[1] = Isaac.FindByType(EntityType.ENTITY_EFFECT, -1, -1, true, false) - searchGroups[2] = Isaac.FindInRadius(EID.player.Position, tonumber(EID.Config["MaxDistance"])*40, searchPartitions) + + table.insert(searchGroups, Isaac.FindInRadius(EID.player.Position, tonumber(EID.Config["MaxDistance"])*40, searchPartitions)) + for k,_ in pairs(EID.effectList) do + table.insert(searchGroups, Isaac.FindByType(EntityType.ENTITY_EFFECT, k, -1, true, false)) + end + for _, entitySearch in ipairs(searchGroups) do for i, entity in ipairs(entitySearch) do if EID:hasDescription(entity) and entity.FrameCount > 0 then