From 633894364d850569c2270b26690a62011fd6e5b9 Mon Sep 17 00:00:00 2001
From: MidoriKami <9083275+MidoriKami@users.noreply.github.com>
Date: Thu, 7 Sep 2023 10:12:19 -0700
Subject: [PATCH] Add Targets to TargetManager (#1364)
---
Dalamud/Game/ClientState/Objects/TargetManager.cs | 14 ++++++++++++++
.../Internal/Windows/Data/Widgets/TargetWidget.cs | 6 ++++++
Dalamud/Plugin/Services/ITargetManager.cs | 12 ++++++++++++
3 files changed, 32 insertions(+)
diff --git a/Dalamud/Game/ClientState/Objects/TargetManager.cs b/Dalamud/Game/ClientState/Objects/TargetManager.cs
index ff1bdc5ba..00bcaac7d 100644
--- a/Dalamud/Game/ClientState/Objects/TargetManager.cs
+++ b/Dalamud/Game/ClientState/Objects/TargetManager.cs
@@ -70,6 +70,20 @@ public sealed unsafe class TargetManager : IServiceType, ITargetManager
set => this.SetSoftTarget(value);
}
+ ///
+ public GameObject? GPoseTarget
+ {
+ get => this.objectTable.CreateObjectReference((IntPtr)Struct->GPoseTarget);
+ set => Struct->GPoseTarget = (FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)value?.Address;
+ }
+
+ ///
+ public GameObject? MouseOverNameplateTarget
+ {
+ get => this.objectTable.CreateObjectReference((IntPtr)Struct->MouseOverNameplateTarget);
+ set => Struct->MouseOverNameplateTarget = (FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)value?.Address;
+ }
+
private FFXIVClientStructs.FFXIV.Client.Game.Control.TargetSystem* Struct => (FFXIVClientStructs.FFXIV.Client.Game.Control.TargetSystem*)this.Address;
///
diff --git a/Dalamud/Interface/Internal/Windows/Data/Widgets/TargetWidget.cs b/Dalamud/Interface/Internal/Windows/Data/Widgets/TargetWidget.cs
index 57fd03300..f33e67f70 100644
--- a/Dalamud/Interface/Internal/Windows/Data/Widgets/TargetWidget.cs
+++ b/Dalamud/Interface/Internal/Windows/Data/Widgets/TargetWidget.cs
@@ -63,6 +63,12 @@ internal class TargetWidget : IDataWindowWidget
if (targetMgr.SoftTarget != null)
Util.PrintGameObject(targetMgr.SoftTarget, "SoftTarget", this.resolveGameData);
+
+ if (targetMgr.GPoseTarget != null)
+ Util.PrintGameObject(targetMgr.GPoseTarget, "GPoseTarget", this.resolveGameData);
+
+ if (targetMgr.MouseOverNameplateTarget != null)
+ Util.PrintGameObject(targetMgr.MouseOverNameplateTarget, "MouseOverNameplateTarget", this.resolveGameData);
if (ImGui.Button("Clear CT"))
targetMgr.Target = null;
diff --git a/Dalamud/Plugin/Services/ITargetManager.cs b/Dalamud/Plugin/Services/ITargetManager.cs
index 108b1ca03..99a9d8dfb 100644
--- a/Dalamud/Plugin/Services/ITargetManager.cs
+++ b/Dalamud/Plugin/Services/ITargetManager.cs
@@ -41,4 +41,16 @@ public interface ITargetManager
/// Set to null to clear the target.
///
public GameObject? SoftTarget { get; set; }
+
+ ///
+ /// Gets or sets the gpose target.
+ /// Set to null to clear the target.
+ ///
+ public GameObject? GPoseTarget { get; set; }
+
+ ///
+ /// Gets or sets the mouseover nameplate target.
+ /// Set to null to clear the target.
+ ///
+ public GameObject? MouseOverNameplateTarget { get; set; }
}