From e5aa381e38b5a075b0bb588d0314d1bc9cc59852 Mon Sep 17 00:00:00 2001 From: MapleWheels Date: Tue, 10 Mar 2026 03:22:30 -0400 Subject: [PATCH] performance fixes for IDE/attached debugger stuttering. --- .../_Services/LuaScriptManagementService.cs | 25 +++++++++++- .../_Services/_Lua/DefaultLuaRegistrar.cs | 38 +++++++++++++++++-- Libraries/moonsharp | 2 +- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs index b3770a90a..39e238e6e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs @@ -26,7 +26,7 @@ using System.Diagnostics; namespace Barotrauma.LuaCs; -class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService +internal sealed class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService { public Script? InternalScript => _script; @@ -335,6 +335,29 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService UserData.RegisterType(typeof(IResourceInfo)); UserData.RegisterType(typeof(IUserDataDescriptor)); UserData.RegisterType(typeof(INetworkingService)); + + // Config/Settings + UserData.RegisterType(typeof(IConfigService)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingBase)); + UserData.RegisterType(typeof(ISettingRangeBase)); + UserData.RegisterType(typeof(ISettingRangeBase)); +#if CLIENT + UserData.RegisterType(typeof(ISettingControl)); +#endif + new LuaConverters(this).RegisterLuaConverters(); diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs index ff92e09ec..ed854722f 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Numerics; using System.Reflection; using System.Runtime.CompilerServices; +using Barotrauma.LuaCs.Data; namespace Barotrauma.LuaCs; @@ -41,17 +42,48 @@ public class DefaultLuaRegistrar : IDefaultLuaRegistrar _userDataService.RegisterType("Barotrauma.Range`1"); _userDataService.RegisterType("Barotrauma.ItemPrefab"); - List assembliesToScan = [typeof(DefaultLuaRegistrar).Assembly, typeof(Identifier).Assembly, typeof(Microsoft.Xna.Framework.Vector2).Assembly]; + List assembliesToScan = [ + typeof(DefaultLuaRegistrar).Assembly, + typeof(Identifier).Assembly, + //causes tons of lag (high lookup time) + //typeof(Microsoft.Xna.Framework.Vector2).Assembly + ]; - foreach (var type in assembliesToScan.SelectMany(a => a.GetTypes())) + foreach (var type in assembliesToScan.SelectMany(a => a.GetSafeTypes())) { if (type.IsEnum || type.Name.StartsWith("<") || type.IsDefined(typeof(CompilerGeneratedAttribute)) || !_safeUserDataService.IsAllowed(type.FullName)) { continue; } - + + if (type.FullName?.StartsWith("Barotrauma.LuaCs") ?? false) + { + continue; + } + _userDataService.RegisterType(type.FullName); } + + _userDataService.RegisterType(typeof(IConfigService).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingBase).FullName); + _userDataService.RegisterType(typeof(ISettingRangeBase).FullName); + _userDataService.RegisterType(typeof(ISettingRangeBase).FullName); +#if CLIENT + _userDataService.RegisterType(typeof(ISettingControl).FullName); +#endif _userDataService.RegisterType("Barotrauma.LuaSByte"); _userDataService.RegisterType("Barotrauma.LuaByte"); diff --git a/Libraries/moonsharp b/Libraries/moonsharp index e3c2270e8..7b78e0883 160000 --- a/Libraries/moonsharp +++ b/Libraries/moonsharp @@ -1 +1 @@ -Subproject commit e3c2270e8277de98b0ec2b42b42909e6e6c8afd9 +Subproject commit 7b78e0883c0be1771f7d1ec6d4a94b96c24dd735