From abf329dd21729d9e3054c2f3cf4e04e6eab4e5cc Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Sat, 5 Mar 2022 12:01:38 -0300 Subject: [PATCH] add Unregister functions to LuaUserData --- .../SharedSource/Lua/LuaClasses.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs index dd9b3a447..d521e8762 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs @@ -44,6 +44,14 @@ namespace Barotrauma return (IUserDataDescriptor)generic.Invoke(null, new object[] { null, null }); } + public static void UnregisterType(string typeName) + { + Type type = GetType(typeName); + + MethodInfo method = typeof(UserData).GetMethod(nameof(UserData.UnregisterType), new Type[2] { typeof(InteropAccessMode), typeof(string) }); + MethodInfo generic = method.MakeGenericMethod(type); + generic.Invoke(null, new object[] { null, null }); + } public static IUserDataDescriptor RegisterGenericType(string typeName, params string[] typeNameArguements) { Type type = GetType(typeName); @@ -52,6 +60,14 @@ namespace Barotrauma return UserData.RegisterType(genericType); } + public static void UnregisterGenericType(string typeName, params string[] typeNameArguements) + { + Type type = GetType(typeName); + Type[] typeArguements = typeNameArguements.Select(x => GetType(x)).ToArray(); + Type genericType = type.MakeGenericType(typeArguements); + UserData.UnregisterType(genericType); + } + private static bool IsType(object obj) { return obj is T; } public static bool IsTargetType(object obj, string typeName)