From ac9db3052d9f909b9f1867b9de3dbbfd1fb5f6c7 Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Thu, 4 May 2023 00:55:58 +0200 Subject: [PATCH] fix global draw block for different object quantity --- MareSynchronos/MareSynchronos.csproj | 2 +- MareSynchronos/Services/DalamudUtilService.cs | 26 +++++++++++++------ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index 136a151..3c24ff8 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -3,7 +3,7 @@ - 0.8.33 + 0.8.34 https://github.com/Penumbra-Sync/client diff --git a/MareSynchronos/Services/DalamudUtilService.cs b/MareSynchronos/Services/DalamudUtilService.cs index bbf859b..25dff69 100644 --- a/MareSynchronos/Services/DalamudUtilService.cs +++ b/MareSynchronos/Services/DalamudUtilService.cs @@ -350,24 +350,34 @@ public class DalamudUtilService : IHostedService if (!IsAnythingDrawing) { var gameObj = (GameObject*)p.Address; - bool isDrawing = gameObj->RenderFlags == 0b100000000000; - if (!isDrawing) + var drawObj = gameObj->DrawObject; + bool isDrawing = false; + if ((nint)drawObj != IntPtr.Zero) { - var drawObj = gameObj->DrawObject; - if ((nint)drawObj != IntPtr.Zero) + isDrawing = gameObj->RenderFlags == 0b100000000000; + if (!isDrawing) { isDrawing = ((CharacterBase*)drawObj)->HasModelInSlotLoaded != 0; if (!isDrawing) { isDrawing = ((CharacterBase*)drawObj)->HasModelFilesInSlotLoaded != 0; + if (isDrawing) + { + _logger.LogTrace("Global draw block triggered by {name} due to HasModelFilesInSlotLoaded", p.Name.ToString()); + } } + else + { + _logger.LogTrace("Global draw block triggered by {name} due to HasModelInSlotLoaded", p.Name.ToString()); + } + } + else + { + _logger.LogTrace("Global draw block triggered by {name} due to RenderFlags", p.Name.ToString()); } } - if (isDrawing) - { - IsAnythingDrawing = true; - } + IsAnythingDrawing |= isDrawing; } return (p.Name.ToString(), p.Address); }, StringComparer.Ordinal));