From 9f04ee7695e168b691cbdd7e33ecbb60f0e02948 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Sun, 4 Aug 2024 12:39:01 +0200 Subject: [PATCH] Fix visor state toggle. --- Glamourer/Interop/MetaService.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Glamourer/Interop/MetaService.cs b/Glamourer/Interop/MetaService.cs index 062986b..1dc4c1a 100644 --- a/Glamourer/Interop/MetaService.cs +++ b/Glamourer/Interop/MetaService.cs @@ -13,7 +13,7 @@ public unsafe class MetaService : IDisposable private readonly VisorStateChanged _visorEvent; private delegate void HideHatGearDelegate(DrawDataContainer* drawData, uint id, byte value); - private delegate void HideWeaponsDelegate(DrawDataContainer* drawData, bool value); + private delegate void HideWeaponsDelegate(DrawDataContainer* drawData, byte value); private readonly Hook _hideHatGearHook; private readonly Hook _hideWeaponsHook; @@ -61,7 +61,7 @@ public unsafe class MetaService : IDisposable if (!actor.IsCharacter) return; - _hideWeaponsHook.Original(&actor.AsCharacter->DrawData, !value); + _hideWeaponsHook.Original(&actor.AsCharacter->DrawData, (byte)(value ? 0 : 1)); } private void HideHatDetour(DrawDataContainer* drawData, uint id, byte value) @@ -80,21 +80,21 @@ public unsafe class MetaService : IDisposable _hideHatGearHook.Original(drawData, id, value); } - private void HideWeaponsDetour(DrawDataContainer* drawData, bool value) + private void HideWeaponsDetour(DrawDataContainer* drawData, byte value) { Actor actor = drawData->OwnerObject; - value = !value; - _weaponEvent.Invoke(actor, ref value); - value = !value; + var v = value == 0; + _weaponEvent.Invoke(actor, ref v); Glamourer.Log.Verbose($"[MetaService] Hide Weapon triggered with 0x{(nint)drawData:X} {value} for {actor.Utf8Name}."); - _hideWeaponsHook.Original(drawData, value); + _hideWeaponsHook.Original(drawData, (byte)(v ? 0 : 1)); } - private void ToggleVisorDetour(DrawDataContainer* drawData, bool value) + private void ToggleVisorDetour(DrawDataContainer* drawData, byte value) { Actor actor = drawData->OwnerObject; - _visorEvent.Invoke(actor.Model, true, ref value); + var v = value != 0; + _visorEvent.Invoke(actor.Model, true, ref v); Glamourer.Log.Verbose($"[MetaService] Toggle Visor triggered with 0x{(nint)drawData:X} {value} for {actor.Utf8Name}."); - _toggleVisorHook.Original(drawData, value); + _toggleVisorHook.Original(drawData, (byte)(v ? 1 : 0)); } }