Merge pull request #27 from ff-meli/interface

Beginnings of ImGuiScene cleanup
This commit is contained in:
goaaats 2020-01-22 17:59:54 +09:00 committed by GitHub
commit f707bbaa06
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 11 deletions

View file

@ -84,7 +84,7 @@ namespace Dalamud {
this.WinSock2 = new WinSockHandlers(); this.WinSock2 = new WinSockHandlers();
this.InterfaceManager = new InterfaceManager(this.sigScanner); this.InterfaceManager = new InterfaceManager(this, this.sigScanner);
this.InterfaceManager.OnDraw += BuildDalamudUi; this.InterfaceManager.OnDraw += BuildDalamudUi;
this.InterfaceManager.Enable(); this.InterfaceManager.Enable();
} }

View file

@ -1,9 +1,7 @@
using System; using System;
using System.Diagnostics; using System.IO;
using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using Dalamud.Game; using Dalamud.Game;
using Dalamud.Game.Internal;
using Dalamud.Game.Internal.DXGI; using Dalamud.Game.Internal.DXGI;
using Dalamud.Hooking; using Dalamud.Hooking;
using EasyHook; using EasyHook;
@ -38,6 +36,7 @@ namespace Dalamud.Interface
private ISwapChainAddressResolver Address { get; } private ISwapChainAddressResolver Address { get; }
private Dalamud dalamud;
private RawDX11Scene scene; private RawDX11Scene scene;
/// <summary> /// <summary>
@ -45,8 +44,10 @@ namespace Dalamud.Interface
/// </summary> /// </summary>
public event RawDX11Scene.BuildUIDelegate OnDraw; public event RawDX11Scene.BuildUIDelegate OnDraw;
public InterfaceManager(SigScanner scanner) public InterfaceManager(Dalamud dalamud, SigScanner scanner)
{ {
this.dalamud = dalamud;
try { try {
var sigResolver = new SwapChainSigResolver(); var sigResolver = new SwapChainSigResolver();
sigResolver.Setup(scanner); sigResolver.Setup(scanner);
@ -84,16 +85,12 @@ namespace Dalamud.Interface
{ {
this.setCursorHook.Enable(); this.setCursorHook.Enable();
this.presentHook.Enable(); this.presentHook.Enable();
this.scene?.Enable();
} }
private void Disable() private void Disable()
{ {
this.setCursorHook.Disable(); this.setCursorHook.Disable();
this.presentHook.Disable(); this.presentHook.Disable();
this.scene?.Disable();
} }
public void Dispose() public void Dispose()
@ -116,6 +113,7 @@ namespace Dalamud.Interface
if (this.scene == null) if (this.scene == null)
{ {
this.scene = new RawDX11Scene(swapChain); this.scene = new RawDX11Scene(swapChain);
this.scene.ImGuiIniPath = Path.Combine(Path.GetDirectoryName(this.dalamud.StartInfo.ConfigurationPath), "dalamudUI.ini");
this.scene.OnBuildUI += Display; this.scene.OnBuildUI += Display;
} }
@ -130,7 +128,7 @@ namespace Dalamud.Interface
private IntPtr SetCursorDetour(IntPtr hCursor) { private IntPtr SetCursorDetour(IntPtr hCursor) {
Log.Debug($"hCursor: {hCursor.ToInt64():X} WantCapture: {this.lastWantCapture}"); Log.Debug($"hCursor: {hCursor.ToInt64():X} WantCapture: {this.lastWantCapture}");
if (this.lastWantCapture == true && ImGui_Input_Impl_Direct.Cursors != null && !ImGui_Input_Impl_Direct.Cursors.Contains(hCursor)) if (this.lastWantCapture == true && (!scene?.IsImGuiCursor(hCursor) ?? false))
return IntPtr.Zero; return IntPtr.Zero;
return this.setCursorHook.Original(hCursor); return this.setCursorHook.Original(hCursor);

@ -1 +1 @@
Subproject commit f1a6ea14c354ecc65d36ab212de3d3ce91b60556 Subproject commit 09dde468ea8a6a1729fc8dd334379d1514264742