diff --git a/Dalamud/Game/AddonLifecycle/AddonLifecycle.cs b/Dalamud/Game/AddonLifecycle/AddonLifecycle.cs index 3a8644c4c..a3e9f4be8 100644 --- a/Dalamud/Game/AddonLifecycle/AddonLifecycle.cs +++ b/Dalamud/Game/AddonLifecycle/AddonLifecycle.cs @@ -55,7 +55,7 @@ internal unsafe class AddonLifecycle : IDisposable, IServiceType private delegate void AddonDrawDelegate(AtkUnitBase* addon); - private delegate void AddonUpdateDelegate(AtkUnitBase* addon); + private delegate void AddonUpdateDelegate(AtkUnitBase* addon, float delta); /// public void Dispose() @@ -174,8 +174,6 @@ internal unsafe class AddonLifecycle : IDisposable, IServiceType private void OnAddonDraw(AtkUnitBase* addon) { - if (addon is null) return; - try { this.InvokeListeners(AddonEvent.PreDraw, new IAddonLifecycle.AddonArgs { Addon = (nint)addon }); @@ -185,7 +183,7 @@ internal unsafe class AddonLifecycle : IDisposable, IServiceType Log.Error(e, "Exception in OnAddonDraw pre-draw invoke."); } - ((delegate* unmanaged)addon->AtkEventListener.vfunc[42])(addon); + addon->Draw(); try { @@ -197,10 +195,8 @@ internal unsafe class AddonLifecycle : IDisposable, IServiceType } } - private void OnAddonUpdate(AtkUnitBase* addon) + private void OnAddonUpdate(AtkUnitBase* addon, float delta) { - if (addon is null) return; - try { this.InvokeListeners(AddonEvent.PreUpdate, new IAddonLifecycle.AddonArgs { Addon = (nint)addon }); @@ -209,8 +205,8 @@ internal unsafe class AddonLifecycle : IDisposable, IServiceType { Log.Error(e, "Exception in OnAddonUpdate pre-update invoke."); } - - ((delegate* unmanaged)addon->AtkEventListener.vfunc[41])(addon); + + addon->Update(delta); try { diff --git a/Dalamud/Game/AddonLifecycle/AddonLifecycleAddressResolver.cs b/Dalamud/Game/AddonLifecycle/AddonLifecycleAddressResolver.cs index 0300667a9..688476d82 100644 --- a/Dalamud/Game/AddonLifecycle/AddonLifecycleAddressResolver.cs +++ b/Dalamud/Game/AddonLifecycle/AddonLifecycleAddressResolver.cs @@ -33,7 +33,7 @@ internal class AddonLifecycleAddressResolver : BaseAddressResolver { this.AddonSetup = sig.ScanText("E8 ?? ?? ?? ?? 8B 83 ?? ?? ?? ?? C1 E8 14"); this.AddonFinalize = sig.ScanText("E8 ?? ?? ?? ?? 48 8B 7C 24 ?? 41 8B C6"); - this.AddonDraw = sig.ScanText("48 8B 01 FF 90 ?? ?? ?? ?? 83 EB 01 79 C1"); + this.AddonDraw = sig.ScanText("FF 90 ?? ?? ?? ?? 83 EB 01 79 C1"); this.AddonUpdate = sig.ScanText("FF 90 ?? ?? ?? ?? 40 88 AF"); } }