From 60c0d04250323b76afc705fd2bce4772306f292b Mon Sep 17 00:00:00 2001 From: mleem97 <52848568+mleem97@users.noreply.github.com> Date: Fri, 31 Jul 2026 00:06:11 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Bolt:=20Replace=20expensive=20FindO?= =?UTF-8?q?bjectsOfType=20Server=20lookups=20with=20O(1)=20NetworkMap=20si?= =?UTF-8?q?ngleton?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scripting/Lua/Modules/LuaServerModule.cs | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Infrastructure/Scripting/Lua/Modules/LuaServerModule.cs b/src/Infrastructure/Scripting/Lua/Modules/LuaServerModule.cs index 17bd8abb..33262f75 100644 --- a/src/Infrastructure/Scripting/Lua/Modules/LuaServerModule.cs +++ b/src/Infrastructure/Scripting/Lua/Modules/LuaServerModule.cs @@ -12,6 +12,21 @@ namespace gregCore.Infrastructure.Scripting.Lua.Modules; public static class LuaServerModule { + // Optimization: Helper to use O(1) game-managed collection with fallback to O(N) FindObjectsOfType + private static System.Collections.Generic.IEnumerable GetServers() + { + var nm = Il2Cpp.NetworkMap.instance; + if (nm != null && nm.servers != null) + { + foreach (var kvp in nm.servers) yield return kvp.Value; + } + else + { + var servers = UnityEngine.Object.FindObjectsOfType(); + foreach (var s in servers) yield return s; + } + } + public static void Register(Table greg, Script script, string modId) { var serverTable = new Table(script); @@ -21,10 +36,9 @@ public static void Register(Table greg, Script script, string modId) { try { - var servers = UnityEngine.Object.FindObjectsOfType(); var result = new Table(script); int i = 1; - foreach (var s in servers) + foreach (var s in GetServers()) { try { @@ -80,8 +94,7 @@ public static void Register(Table greg, Script script, string modId) { try { - var servers = UnityEngine.Object.FindObjectsOfType(); - foreach (var s in servers) + foreach (var s in GetServers()) { try { @@ -104,8 +117,7 @@ public static void Register(Table greg, Script script, string modId) try { int repaired = 0; - var servers = UnityEngine.Object.FindObjectsOfType(); - foreach (var s in servers) + foreach (var s in GetServers()) { try {