From fb894c9f2c9a5ebd38d45e569ce0853cd37dc880 Mon Sep 17 00:00:00 2001 From: XtraCube <72575280+XtraCube@users.noreply.github.com> Date: Sat, 17 May 2025 17:42:19 -0400 Subject: [PATCH] add wrappers around modifiers to catch exceptions --- MiraAPI/Modifiers/ModifierComponent.cs | 37 +++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/MiraAPI/Modifiers/ModifierComponent.cs b/MiraAPI/Modifiers/ModifierComponent.cs index 1a83838..0fe388c 100644 --- a/MiraAPI/Modifiers/ModifierComponent.cs +++ b/MiraAPI/Modifiers/ModifierComponent.cs @@ -72,7 +72,15 @@ public class ModifierComponent(IntPtr cppPtr) : MonoBehaviour(cppPtr) foreach (var modifier in _toRemove.ToArray()) { _toRemove.Remove(modifier); - modifier.OnDeactivate(); + try + { + modifier.OnDeactivate(); + } + catch (Exception e) + { + Logger.Error($"Error while deactivating modifier {modifier.ModifierName}: {e.ToString()}"); + } + Modifiers.Remove(modifier); } @@ -82,7 +90,14 @@ public class ModifierComponent(IntPtr cppPtr) : MonoBehaviour(cppPtr) _toAdd.Remove(modifier); Modifiers.Add(modifier); modifier.Initialized = true; - modifier.OnActivate(); + try + { + modifier.OnActivate(); + } + catch (Exception e) + { + Logger.Error($"Error while activating modifier {modifier.ModifierName}: {e.ToString()}"); + } if (modifier is TimedModifier { AutoStart: true } timer) { @@ -102,7 +117,14 @@ public class ModifierComponent(IntPtr cppPtr) : MonoBehaviour(cppPtr) foreach (var modifier in ActiveModifiers) { - modifier.FixedUpdate(); + try + { + modifier.FixedUpdate(); + } + catch (Exception e) + { + Logger.Error($"Error while (fixed) updating modifier {modifier.ModifierName}: {e.ToString()}"); + } } if (_player.AmOwner && ModifierDisplay && HudManager.InstanceExists) @@ -115,7 +137,14 @@ public class ModifierComponent(IntPtr cppPtr) : MonoBehaviour(cppPtr) { foreach (var modifier in ActiveModifiers) { - modifier.Update(); + try + { + modifier.Update(); + } + catch (Exception e) + { + Logger.Error($"Error while updating modifier {modifier.ModifierName}: {e.ToString()}"); + } } }