diff --git a/Dalamud/Interface/InterfaceManager.cs b/Dalamud/Interface/InterfaceManager.cs index 050fac255..dcad917c8 100644 --- a/Dalamud/Interface/InterfaceManager.cs +++ b/Dalamud/Interface/InterfaceManager.cs @@ -11,6 +11,7 @@ using EasyHook; using ImGuiNET; using ImGuiScene; using Serilog; +using SharpDX.Direct3D11; // general dev notes, here because it's easiest /* @@ -46,6 +47,9 @@ namespace Dalamud.Interface private Dalamud dalamud; private RawDX11Scene scene; + public Device Device => this.scene.Device; + public IntPtr WindowHandlePtr => this.scene.WindowHandle; + private delegate void InstallRTSSHook(); private string rtssPath; @@ -218,9 +222,9 @@ namespace Dalamud.Interface private IntPtr PresentDetour(IntPtr swapChain, uint syncInterval, uint presentFlags) { - if (this.scene == null) - { + if (this.scene == null) { this.scene = new RawDX11Scene(swapChain); + this.scene.ImGuiIniPath = Path.Combine(Path.GetDirectoryName(this.dalamud.StartInfo.ConfigurationPath), "dalamudUI.ini"); this.scene.OnBuildUI += Display; this.scene.OnNewInputFrame += OnNewInputFrame; diff --git a/Dalamud/Interface/UiBuilder.cs b/Dalamud/Interface/UiBuilder.cs index 5ecfbd101..f5c7370a9 100644 --- a/Dalamud/Interface/UiBuilder.cs +++ b/Dalamud/Interface/UiBuilder.cs @@ -19,6 +19,16 @@ namespace Dalamud.Interface public class UiBuilder : IDisposable { private readonly string namespaceName; + /// + /// The game's active Direct3D device. + /// + public Device Device => this.dalamud.InterfaceManager.Device; + + /// + /// The game's main window handle. + /// + public IntPtr WindowHandlePtr => this.dalamud.InterfaceManager.WindowHandlePtr; + /// /// The default Dalamud font based on Noto Sans CJK Medium in 17pt - supporting all game languages and icons. /// diff --git a/Dalamud/SafeMemory.cs b/Dalamud/SafeMemory.cs index e38c2d333..03eb398cd 100644 --- a/Dalamud/SafeMemory.cs +++ b/Dalamud/SafeMemory.cs @@ -12,6 +12,10 @@ namespace Dalamud /// /// Class facilitating safe memory access /// + /// + /// Attention! The performance of these methods is severely worse than regular calls. + /// Please consider using these instead in performance-critical code. + /// public static class SafeMemory { private static readonly IntPtr Handle; diff --git a/lib/ImGuiScene b/lib/ImGuiScene index 97a487c79..facf6b153 160000 --- a/lib/ImGuiScene +++ b/lib/ImGuiScene @@ -1 +1 @@ -Subproject commit 97a487c795b7c8fda6ce5342c88035ba9f40e53d +Subproject commit facf6b1533ea80a76628e1edee3494b61f065e70