From cb2068c51fc7b84a633928abd6b55f545e495946 Mon Sep 17 00:00:00 2001 From: ActuallyAdasi Date: Sat, 22 Mar 2025 12:44:36 -0400 Subject: [PATCH] Fix ExtendedPlayerInventory poor performance This was due to constant exception handling (Null Pointer Exception). This commit has no functional changes other than adding null pointer checks where the constant null pointer exception handling was occuring. --- ExtendedPlayerInventory/BepInExPlugin.cs | 41 ++++++++++++++++-------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/ExtendedPlayerInventory/BepInExPlugin.cs b/ExtendedPlayerInventory/BepInExPlugin.cs index 06e1bc6..debf133 100644 --- a/ExtendedPlayerInventory/BepInExPlugin.cs +++ b/ExtendedPlayerInventory/BepInExPlugin.cs @@ -633,8 +633,14 @@ public static void Postfix(Hud __instance) if (!modEnabled.Value || !addEquipmentRow.Value || Player.m_localPlayer == null) return; - float gameScale = __instance.GetComponent().scaleFactor; + if (__instance == null) + return; + + CanvasScaler canvasScaler = __instance.GetComponent(); + if (canvasScaler == null) + return; + float gameScale = canvasScaler.scaleFactor; Vector3 mousePos = Input.mousePosition; if (!modEnabled.Value) @@ -648,25 +654,30 @@ public static void Postfix(Hud __instance) if (lastMousePos == Vector3.zero) lastMousePos = mousePos; + if (Hud.instance == null) + return; Transform hudRoot = Hud.instance.transform.Find("hudroot"); - + if (hudRoot == null) + return; if (AedenthornUtils.CheckKeyHeld(modKeyOne.Value) && AedenthornUtils.CheckKeyHeld(modKeyTwo.Value)) { + Transform quickAccessBar = hudRoot.Find("QuickAccessBar"); + if (quickAccessBar == null) + return; + + RectTransform quickAccessRectTransform = quickAccessBar.GetComponent(); + if (quickAccessRectTransform == null) + return; + + Rect quickSlotsRect = new Rect( + quickAccessRectTransform.anchoredPosition.x * gameScale, + quickAccessRectTransform.anchoredPosition.y * gameScale + Screen.height - quickAccessRectTransform.sizeDelta.y * gameScale * quickAccessScale.Value, + quickAccessRectTransform.sizeDelta.x * gameScale * quickAccessScale.Value * (3 / 8f), + quickAccessRectTransform.sizeDelta.y * gameScale * quickAccessScale.Value + ); - - Rect quickSlotsRect = Rect.zero; - if (hudRoot.Find("QuickAccessBar")?.GetComponent() != null) - { - quickSlotsRect = new Rect( - hudRoot.Find("QuickAccessBar").GetComponent().anchoredPosition.x * gameScale, - hudRoot.Find("QuickAccessBar").GetComponent().anchoredPosition.y * gameScale + Screen.height - hudRoot.Find("QuickAccessBar").GetComponent().sizeDelta.y * gameScale * quickAccessScale.Value, - hudRoot.Find("QuickAccessBar").GetComponent().sizeDelta.x * gameScale * quickAccessScale.Value * (3 / 8f), - hudRoot.Find("QuickAccessBar").GetComponent().sizeDelta.y * gameScale * quickAccessScale.Value - ); - } - if (quickSlotsRect.Contains(lastMousePos) && (currentlyDragging == "" || currentlyDragging == "QuickAccessBar")) { quickAccessX.Value += (mousePos.x - lastMousePos.x) / gameScale; @@ -679,7 +690,9 @@ public static void Postfix(Hud __instance) } } else + { currentlyDragging = ""; + } lastMousePos = mousePos; }