mirror of
https://github.com/GrahamKracker/UnityExplorer.git
synced 2025-01-05 17:13:22 +08:00
Fix panel resizing on alternate monitors
This commit is contained in:
parent
d67507ead2
commit
91bb58b020
@ -13,6 +13,11 @@ namespace UnityExplorer.UI
|
|||||||
public static int ActiveDisplayIndex { get; private set; }
|
public static int ActiveDisplayIndex { get; private set; }
|
||||||
public static Display ActiveDisplay => Display.displays[ActiveDisplayIndex];
|
public static Display ActiveDisplay => Display.displays[ActiveDisplayIndex];
|
||||||
|
|
||||||
|
public static int Width => ActiveDisplay.renderingWidth;
|
||||||
|
public static int Height => ActiveDisplay.renderingHeight;
|
||||||
|
|
||||||
|
public static Vector3 MousePosition => Display.RelativeMouseAt(InputManager.MousePosition);
|
||||||
|
|
||||||
private static Camera canvasCamera;
|
private static Camera canvasCamera;
|
||||||
|
|
||||||
internal static void Init()
|
internal static void Init()
|
||||||
@ -21,8 +26,6 @@ namespace UnityExplorer.UI
|
|||||||
ConfigManager.Target_Display.OnValueChanged += SetDisplay;
|
ConfigManager.Target_Display.OnValueChanged += SetDisplay;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Vector3 MousePosition => Display.RelativeMouseAt(InputManager.MousePosition);
|
|
||||||
|
|
||||||
public static void SetDisplay(int display)
|
public static void SetDisplay(int display)
|
||||||
{
|
{
|
||||||
if (ActiveDisplayIndex == display)
|
if (ActiveDisplayIndex == display)
|
||||||
|
@ -260,7 +260,7 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
#region RESIZE
|
#region RESIZE
|
||||||
|
|
||||||
private readonly Dictionary<ResizeTypes, Rect> m_resizeMask = new Dictionary<ResizeTypes, Rect>
|
private readonly Dictionary<ResizeTypes, Rect> m_resizeMask = new()
|
||||||
{
|
{
|
||||||
{ ResizeTypes.Top, default },
|
{ ResizeTypes.Top, default },
|
||||||
{ ResizeTypes.Left, default },
|
{ ResizeTypes.Left, default },
|
||||||
@ -413,13 +413,13 @@ namespace UnityExplorer.UI.Panels
|
|||||||
if ((Vector2)mousePos == lastResizePos)
|
if ((Vector2)mousePos == lastResizePos)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (mousePos.x < 0 || mousePos.y < 0 || mousePos.x > Screen.width || mousePos.y > Screen.height)
|
if (mousePos.x < 0 || mousePos.y < 0 || mousePos.x > DisplayManager.Width || mousePos.y > DisplayManager.Height)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
lastResizePos = mousePos;
|
lastResizePos = mousePos;
|
||||||
|
|
||||||
float diffX = (float)((decimal)diff.x / Screen.width);
|
float diffX = (float)((decimal)diff.x / DisplayManager.Width);
|
||||||
float diffY = (float)((decimal)diff.y / Screen.height);
|
float diffY = (float)((decimal)diff.y / DisplayManager.Height);
|
||||||
|
|
||||||
Vector2 anchorMin = Panel.anchorMin;
|
Vector2 anchorMin = Panel.anchorMin;
|
||||||
Vector2 anchorMax = Panel.anchorMax;
|
Vector2 anchorMax = Panel.anchorMax;
|
||||||
|
@ -11,6 +11,7 @@ using UnityExplorer.UI.Widgets;
|
|||||||
using UniverseLib.UI.Models;
|
using UniverseLib.UI.Models;
|
||||||
using UniverseLib.UI;
|
using UniverseLib.UI;
|
||||||
using UniverseLib;
|
using UniverseLib;
|
||||||
|
using System.Collections;
|
||||||
|
|
||||||
namespace UnityExplorer.UI.Panels
|
namespace UnityExplorer.UI.Panels
|
||||||
{
|
{
|
||||||
@ -150,8 +151,8 @@ namespace UnityExplorer.UI.Panels
|
|||||||
var pos = panel.localPosition;
|
var pos = panel.localPosition;
|
||||||
|
|
||||||
// Prevent panel going oustide screen bounds
|
// Prevent panel going oustide screen bounds
|
||||||
var halfW = Screen.width * 0.5f;
|
var halfW = DisplayManager.Width * 0.5f;
|
||||||
var halfH = Screen.height * 0.5f;
|
var halfH = DisplayManager.Height * 0.5f;
|
||||||
|
|
||||||
pos.x = Math.Max(-halfW - panel.rect.width + 50, Math.Min(pos.x, halfW - 50));
|
pos.x = Math.Max(-halfW - panel.rect.width + 50, Math.Min(pos.x, halfW - 50));
|
||||||
pos.y = Math.Max(-halfH + 50, Math.Min(pos.y, halfH));
|
pos.y = Math.Max(-halfH + 50, Math.Min(pos.y, halfH));
|
||||||
@ -309,14 +310,7 @@ namespace UnityExplorer.UI.Panels
|
|||||||
SetTransformDefaults();
|
SetTransformDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
LayoutRebuilder.ForceRebuildLayoutImmediate(this.Rect);
|
RuntimeProvider.Instance.StartCoroutine(LateSetupCoroutine());
|
||||||
|
|
||||||
// ensure initialized position is valid
|
|
||||||
EnsureValidSize();
|
|
||||||
EnsureValidPosition(this.Rect);
|
|
||||||
|
|
||||||
// update dragger and save data
|
|
||||||
Dragger.OnEndResize();
|
|
||||||
|
|
||||||
// simple listener for saving enabled state
|
// simple listener for saving enabled state
|
||||||
this.OnToggleEnabled += (bool val) =>
|
this.OnToggleEnabled += (bool val) =>
|
||||||
@ -327,6 +321,18 @@ namespace UnityExplorer.UI.Panels
|
|||||||
ApplyingSaveData = false;
|
ApplyingSaveData = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IEnumerator LateSetupCoroutine()
|
||||||
|
{
|
||||||
|
yield return null;
|
||||||
|
|
||||||
|
// ensure initialized position is valid
|
||||||
|
EnsureValidSize();
|
||||||
|
EnsureValidPosition(this.Rect);
|
||||||
|
|
||||||
|
// update dragger and save data
|
||||||
|
Dragger.OnEndResize();
|
||||||
|
}
|
||||||
|
|
||||||
public override void ConstructUI(GameObject parent) => ConstructUI();
|
public override void ConstructUI(GameObject parent) => ConstructUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,7 +387,7 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
return string.Format(CultureInfo.InvariantCulture, "{0},{1}", new object[]
|
return string.Format(CultureInfo.InvariantCulture, "{0},{1}", new object[]
|
||||||
{
|
{
|
||||||
rect.localPosition.x, rect.localPosition.y
|
rect.anchoredPosition.x, rect.anchoredPosition.y
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,10 +405,10 @@ namespace UnityExplorer.UI.Panels
|
|||||||
if (split.Length != 2)
|
if (split.Length != 2)
|
||||||
throw new Exception($"stringPosition split is unexpected length: {split.Length}");
|
throw new Exception($"stringPosition split is unexpected length: {split.Length}");
|
||||||
|
|
||||||
Vector3 vector = rect.localPosition;
|
Vector3 vector = rect.anchoredPosition;
|
||||||
vector.x = float.Parse(split[0], CultureInfo.InvariantCulture);
|
vector.x = float.Parse(split[0], CultureInfo.InvariantCulture);
|
||||||
vector.y = float.Parse(split[1], CultureInfo.InvariantCulture);
|
vector.y = float.Parse(split[1], CultureInfo.InvariantCulture);
|
||||||
rect.localPosition = vector;
|
rect.anchoredPosition = vector;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,13 +175,13 @@
|
|||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="UniverseLib.Mono">
|
<Reference Include="UniverseLib.Mono">
|
||||||
<HintPath>packages\UniverseLib.1.0.6\lib\net35\UniverseLib.Mono.dll</HintPath>
|
<HintPath>packages\UniverseLib.1.1.0\lib\net35\UniverseLib.Mono.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<!-- Il2Cpp refs -->
|
<!-- Il2Cpp refs -->
|
||||||
<ItemGroup Condition="'$(IsCpp)'=='true'">
|
<ItemGroup Condition="'$(IsCpp)'=='true'">
|
||||||
<Reference Include="UniverseLib.IL2CPP">
|
<Reference Include="UniverseLib.IL2CPP">
|
||||||
<HintPath>packages\UniverseLib.1.0.6\lib\net472\UniverseLib.IL2CPP.dll</HintPath>
|
<HintPath>packages\UniverseLib.1.1.0\lib\net472\UniverseLib.IL2CPP.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="UnhollowerBaseLib">
|
<Reference Include="UnhollowerBaseLib">
|
||||||
<HintPath>..\lib\Il2CppAssemblyUnhollower\UnhollowerBaseLib\bin\Release\net4.7.2\UnhollowerBaseLib.dll</HintPath>
|
<HintPath>..\lib\Il2CppAssemblyUnhollower\UnhollowerBaseLib\bin\Release\net4.7.2\UnhollowerBaseLib.dll</HintPath>
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
<package id="ILRepack.Lib.MSBuild.Task" version="2.0.18.2" targetFramework="net35" />
|
<package id="ILRepack.Lib.MSBuild.Task" version="2.0.18.2" targetFramework="net35" />
|
||||||
<package id="Mono.Cecil" version="0.10.4" targetFramework="net35" />
|
<package id="Mono.Cecil" version="0.10.4" targetFramework="net35" />
|
||||||
<package id="Samboy063.Tomlet" version="3.1.3" targetFramework="net472" />
|
<package id="Samboy063.Tomlet" version="3.1.3" targetFramework="net472" />
|
||||||
<package id="UniverseLib" version="1.0.6" targetFramework="net35" />
|
<package id="UniverseLib" version="1.1.0" targetFramework="net35" />
|
||||||
</packages>
|
</packages>
|
Loading…
x
Reference in New Issue
Block a user