mirror of
https://github.com/sinai-dev/UnityExplorer.git
synced 2025-06-16 22:27:45 +08:00
Fix UIPanels being broken after resolution changes, better checks on size/position
This commit is contained in:
parent
c134c1752e
commit
5aef8ddc99
@ -226,7 +226,7 @@ namespace UnityExplorer.UI.Inspectors
|
|||||||
|
|
||||||
var scrollObj = UIFactory.CreateScrollView(UIRoot, "GameObjectInspector", out Content, out var scrollbar,
|
var scrollObj = UIFactory.CreateScrollView(UIRoot, "GameObjectInspector", out Content, out var scrollbar,
|
||||||
new Color(0.065f, 0.065f, 0.065f));
|
new Color(0.065f, 0.065f, 0.065f));
|
||||||
UIFactory.SetLayoutElement(scrollObj, minHeight: 300, flexibleWidth: 9999, flexibleHeight: 1);
|
UIFactory.SetLayoutElement(scrollObj, minHeight: 250, preferredHeight: 300, flexibleHeight: 0, flexibleWidth: 9999);
|
||||||
|
|
||||||
UIFactory.SetLayoutGroup<VerticalLayoutGroup>(Content, spacing: 3, padTop: 2, padBottom: 2, padLeft: 2, padRight: 2);
|
UIFactory.SetLayoutGroup<VerticalLayoutGroup>(Content, spacing: 3, padTop: 2, padBottom: 2, padLeft: 2, padRight: 2);
|
||||||
|
|
||||||
@ -244,10 +244,7 @@ namespace UnityExplorer.UI.Inspectors
|
|||||||
{
|
{
|
||||||
var listHolder = UIFactory.CreateUIObject("ListHolders", UIRoot);
|
var listHolder = UIFactory.CreateUIObject("ListHolders", UIRoot);
|
||||||
UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(listHolder, false, true, true, true, 8, 2, 2, 2, 2);
|
UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(listHolder, false, true, true, true, 8, 2, 2, 2, 2);
|
||||||
UIFactory.SetLayoutElement(listHolder, minHeight: 350, flexibleWidth: 9999, flexibleHeight: 9999);
|
UIFactory.SetLayoutElement(listHolder, minHeight: 150, flexibleWidth: 9999, flexibleHeight: 9999);
|
||||||
//var listRect = listHolder.GetComponent<RectTransform>();
|
|
||||||
//listRect.anchorMin = new Vector2(0, 1);
|
|
||||||
//listRect.anchorMax = new Vector2(1, 1);
|
|
||||||
|
|
||||||
// Left group (Children)
|
// Left group (Children)
|
||||||
|
|
||||||
|
@ -155,8 +155,8 @@ namespace UnityExplorer.UI.Inspectors
|
|||||||
mousePos.x = 350;
|
mousePos.x = 350;
|
||||||
if (mousePos.x > Screen.width - 350)
|
if (mousePos.x > Screen.width - 350)
|
||||||
mousePos.x = Screen.width - 350;
|
mousePos.x = Screen.width - 350;
|
||||||
if (mousePos.y < mainPanelRect.rect.height)
|
if (mousePos.y < Rect.rect.height)
|
||||||
mousePos.y += mainPanelRect.rect.height + 10;
|
mousePos.y += Rect.rect.height + 10;
|
||||||
else
|
else
|
||||||
mousePos.y -= 10;
|
mousePos.y -= 10;
|
||||||
|
|
||||||
@ -341,10 +341,10 @@ namespace UnityExplorer.UI.Inspectors
|
|||||||
|
|
||||||
protected internal override void DoSetDefaultPosAndAnchors()
|
protected internal override void DoSetDefaultPosAndAnchors()
|
||||||
{
|
{
|
||||||
mainPanelRect.anchorMin = Vector2.zero;
|
Rect.anchorMin = Vector2.zero;
|
||||||
mainPanelRect.anchorMax = Vector2.zero;
|
Rect.anchorMax = Vector2.zero;
|
||||||
mainPanelRect.pivot = new Vector2(0.5f, 1);
|
Rect.pivot = new Vector2(0.5f, 1);
|
||||||
mainPanelRect.sizeDelta = new Vector2(700, 150);
|
Rect.sizeDelta = new Vector2(700, 150);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ConstructPanelContent()
|
public override void ConstructPanelContent()
|
||||||
|
@ -62,10 +62,10 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
protected internal override void DoSetDefaultPosAndAnchors()
|
protected internal override void DoSetDefaultPosAndAnchors()
|
||||||
{
|
{
|
||||||
mainPanelRect.localPosition = Vector2.zero;
|
Rect.localPosition = Vector2.zero;
|
||||||
mainPanelRect.pivot = new Vector2(0f, 1f);
|
Rect.pivot = new Vector2(0f, 1f);
|
||||||
mainPanelRect.anchorMin = new Vector2(0.4f, 0.175f);
|
Rect.anchorMin = new Vector2(0.4f, 0.175f);
|
||||||
mainPanelRect.anchorMax = new Vector2(0.85f, 0.925f);
|
Rect.anchorMax = new Vector2(0.85f, 0.925f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ConstructPanelContent()
|
public override void ConstructPanelContent()
|
||||||
|
@ -26,8 +26,8 @@ namespace UnityExplorer.UI.Panels
|
|||||||
public GameObject ContentHolder;
|
public GameObject ContentHolder;
|
||||||
public RectTransform ContentRect;
|
public RectTransform ContentRect;
|
||||||
|
|
||||||
public static float CurrentPanelWidth => Instance.mainPanelRect.rect.width;
|
public static float CurrentPanelWidth => Instance.Rect.rect.width;
|
||||||
public static float CurrentPanelHeight => Instance.mainPanelRect.rect.height;
|
public static float CurrentPanelHeight => Instance.Rect.rect.height;
|
||||||
|
|
||||||
public override void Update()
|
public override void Update()
|
||||||
{
|
{
|
||||||
@ -38,7 +38,7 @@ namespace UnityExplorer.UI.Panels
|
|||||||
{
|
{
|
||||||
base.OnFinishResize(panel);
|
base.OnFinishResize(panel);
|
||||||
|
|
||||||
InspectorManager.PanelWidth = this.mainPanelRect.rect.width;
|
InspectorManager.PanelWidth = this.Rect.rect.width;
|
||||||
InspectorManager.OnPanelResized(panel.rect.width);
|
InspectorManager.OnPanelResized(panel.rect.width);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,10 +51,10 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
protected internal override void DoSetDefaultPosAndAnchors()
|
protected internal override void DoSetDefaultPosAndAnchors()
|
||||||
{
|
{
|
||||||
mainPanelRect.localPosition = Vector2.zero;
|
Rect.localPosition = Vector2.zero;
|
||||||
mainPanelRect.pivot = new Vector2(0f, 1f);
|
Rect.pivot = new Vector2(0f, 1f);
|
||||||
mainPanelRect.anchorMin = new Vector2(0.35f, 0.175f);
|
Rect.anchorMin = new Vector2(0.35f, 0.175f);
|
||||||
mainPanelRect.anchorMax = new Vector2(0.8f, 0.925f);
|
Rect.anchorMax = new Vector2(0.8f, 0.925f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ConstructPanelContent()
|
public override void ConstructPanelContent()
|
||||||
|
@ -51,7 +51,7 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
if (active && !DoneScrollPoolInit)
|
if (active && !DoneScrollPoolInit)
|
||||||
{
|
{
|
||||||
LayoutRebuilder.ForceRebuildLayoutImmediate(this.mainPanelRect);
|
LayoutRebuilder.ForceRebuildLayoutImmediate(this.Rect);
|
||||||
logScrollPool.Initialize(this);
|
logScrollPool.Initialize(this);
|
||||||
DoneScrollPoolInit = true;
|
DoneScrollPoolInit = true;
|
||||||
}
|
}
|
||||||
@ -158,10 +158,10 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
protected internal override void DoSetDefaultPosAndAnchors()
|
protected internal override void DoSetDefaultPosAndAnchors()
|
||||||
{
|
{
|
||||||
mainPanelRect.localPosition = Vector2.zero;
|
Rect.localPosition = Vector2.zero;
|
||||||
mainPanelRect.pivot = new Vector2(0f, 1f);
|
Rect.pivot = new Vector2(0f, 1f);
|
||||||
mainPanelRect.anchorMin = new Vector2(0.5f, 0.03f);
|
Rect.anchorMin = new Vector2(0.5f, 0.03f);
|
||||||
mainPanelRect.anchorMax = new Vector2(0.9f, 0.2f);
|
Rect.anchorMax = new Vector2(0.9f, 0.2f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// UI Construction
|
// UI Construction
|
||||||
|
@ -99,10 +99,10 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
protected internal override void DoSetDefaultPosAndAnchors()
|
protected internal override void DoSetDefaultPosAndAnchors()
|
||||||
{
|
{
|
||||||
mainPanelRect.localPosition = Vector2.zero;
|
Rect.localPosition = Vector2.zero;
|
||||||
mainPanelRect.pivot = new Vector2(0f, 1f);
|
Rect.pivot = new Vector2(0f, 1f);
|
||||||
mainPanelRect.anchorMin = new Vector2(0.125f, 0.175f);
|
Rect.anchorMin = new Vector2(0.125f, 0.175f);
|
||||||
mainPanelRect.anchorMax = new Vector2(0.325f, 0.925f);
|
Rect.anchorMax = new Vector2(0.325f, 0.925f);
|
||||||
//mainPanelRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 350);
|
//mainPanelRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 350);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,11 +69,11 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
protected internal override void DoSetDefaultPosAndAnchors()
|
protected internal override void DoSetDefaultPosAndAnchors()
|
||||||
{
|
{
|
||||||
mainPanelRect.localPosition = Vector2.zero;
|
Rect.localPosition = Vector2.zero;
|
||||||
mainPanelRect.pivot = new Vector2(0f, 1f);
|
Rect.pivot = new Vector2(0f, 1f);
|
||||||
mainPanelRect.anchorMin = new Vector2(0.5f, 0.1f);
|
Rect.anchorMin = new Vector2(0.5f, 0.1f);
|
||||||
mainPanelRect.anchorMax = new Vector2(0.5f, 0.85f);
|
Rect.anchorMax = new Vector2(0.5f, 0.85f);
|
||||||
mainPanelRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 600f);
|
Rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 600f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// UI Construction
|
// UI Construction
|
||||||
|
@ -250,15 +250,9 @@ namespace UnityExplorer.UI.Panels
|
|||||||
Vector2 diff = (Vector2)mousePos - m_lastDragPosition;
|
Vector2 diff = (Vector2)mousePos - m_lastDragPosition;
|
||||||
m_lastDragPosition = mousePos;
|
m_lastDragPosition = mousePos;
|
||||||
|
|
||||||
var pos = Panel.localPosition + (Vector3)diff;
|
Panel.localPosition = Panel.localPosition + (Vector3)diff;
|
||||||
|
|
||||||
// Prevent panel going oustide screen bounds
|
UIPanel.EnsureValidPosition(Panel);
|
||||||
var halfW = Screen.width * 0.5f;
|
|
||||||
var halfH = Screen.height * 0.5f;
|
|
||||||
pos.x = Math.Max(-halfW, Math.Min(pos.x, halfW - Panel.rect.width));
|
|
||||||
pos.y = Math.Max(-halfH + Panel.rect.height, Math.Min(pos.y, halfH));
|
|
||||||
|
|
||||||
Panel.localPosition = pos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnEndDrag()
|
public void OnEndDrag()
|
||||||
@ -425,6 +419,9 @@ namespace UnityExplorer.UI.Panels
|
|||||||
if ((Vector2)mousePos == m_lastResizePos)
|
if ((Vector2)mousePos == m_lastResizePos)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (mousePos.x < 0 || mousePos.y < 0 || mousePos.x > Screen.width || mousePos.y > Screen.height)
|
||||||
|
return;
|
||||||
|
|
||||||
m_lastResizePos = mousePos;
|
m_lastResizePos = mousePos;
|
||||||
|
|
||||||
float diffX = (float)((decimal)diff.x / Screen.width);
|
float diffX = (float)((decimal)diff.x / Screen.width);
|
||||||
|
@ -44,8 +44,8 @@ namespace UnityExplorer.UI.Panels
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// check if our mouse is clicking inside the panel
|
// check if our mouse is clicking inside the panel
|
||||||
var pos = panel.mainPanelRect.InverseTransformPoint(mousePos);
|
var pos = panel.Rect.InverseTransformPoint(mousePos);
|
||||||
if (!panel.Enabled || !panel.mainPanelRect.rect.Contains(pos))
|
if (!panel.Enabled || !panel.Rect.rect.Contains(pos))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// if this is not the top panel, reorder and invoke the onchanged event
|
// if this is not the top panel, reorder and invoke the onchanged event
|
||||||
@ -88,9 +88,11 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
public override GameObject UIRoot => uiRoot;
|
public override GameObject UIRoot => uiRoot;
|
||||||
protected GameObject uiRoot;
|
protected GameObject uiRoot;
|
||||||
protected RectTransform mainPanelRect;
|
public RectTransform Rect;
|
||||||
public GameObject content;
|
public GameObject content;
|
||||||
|
|
||||||
|
public GameObject titleBar;
|
||||||
|
|
||||||
public abstract void ConstructPanelContent();
|
public abstract void ConstructPanelContent();
|
||||||
|
|
||||||
public virtual void OnFinishResize(RectTransform panel)
|
public virtual void OnFinishResize(RectTransform panel)
|
||||||
@ -136,14 +138,85 @@ namespace UnityExplorer.UI.Panels
|
|||||||
public void SetTransformDefaults()
|
public void SetTransformDefaults()
|
||||||
{
|
{
|
||||||
DoSetDefaultPosAndAnchors();
|
DoSetDefaultPosAndAnchors();
|
||||||
|
|
||||||
if (mainPanelRect.rect.width < MinWidth)
|
|
||||||
mainPanelRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, MinWidth);
|
|
||||||
if (mainPanelRect.rect.height < MinHeight)
|
|
||||||
mainPanelRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, MinHeight);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameObject titleBar;
|
public void EnsureValidSize()
|
||||||
|
{
|
||||||
|
if (Rect.rect.width < MinWidth)
|
||||||
|
Rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, MinWidth);
|
||||||
|
if (Rect.rect.height < MinHeight)
|
||||||
|
Rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, MinHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void EnsureValidPosition(RectTransform panel)
|
||||||
|
{
|
||||||
|
var pos = panel.localPosition;
|
||||||
|
|
||||||
|
// Prevent panel going oustide screen bounds
|
||||||
|
var halfW = Screen.width * 0.5f;
|
||||||
|
var halfH = Screen.height * 0.5f;
|
||||||
|
pos.x = Math.Max(-halfW, Math.Min(pos.x, halfW - panel.rect.width));
|
||||||
|
pos.y = Math.Max(-halfH + panel.rect.height, Math.Min(pos.y, halfH));
|
||||||
|
|
||||||
|
panel.localPosition = pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#region Save Data
|
||||||
|
|
||||||
|
public abstract void DoSaveToConfigElement();
|
||||||
|
|
||||||
|
public void SaveToConfigManager()
|
||||||
|
{
|
||||||
|
if (UIManager.Initializing)
|
||||||
|
return;
|
||||||
|
|
||||||
|
DoSaveToConfigElement();
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract string GetSaveDataFromConfigManager();
|
||||||
|
|
||||||
|
public bool ApplyingSaveData { get; set; }
|
||||||
|
|
||||||
|
public virtual string ToSaveData()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return $"{ShouldSaveActiveState && Enabled}" +
|
||||||
|
$"|{Rect.RectAnchorsToString()}" +
|
||||||
|
$"|{Rect.RectPositionToString()}";
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ExplorerCore.LogWarning($"Exception generating Panel save data: {ex}");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void ApplySaveData(string data)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(data))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var split = data.Split('|');
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Rect.SetAnchorsFromString(split[1]);
|
||||||
|
Rect.SetPositionFromString(split[2]);
|
||||||
|
UIManager.SetPanelActive(this.PanelType, bool.Parse(split[0]));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
ExplorerCore.LogWarning("Invalid or corrupt panel save data! Restoring to default.");
|
||||||
|
SetTransformDefaults();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
// UI Construction
|
||||||
|
|
||||||
public void ConstructUI()
|
public void ConstructUI()
|
||||||
{
|
{
|
||||||
@ -168,7 +241,7 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
// create core canvas
|
// create core canvas
|
||||||
uiRoot = UIFactory.CreatePanel(Name, out GameObject panelContent);
|
uiRoot = UIFactory.CreatePanel(Name, out GameObject panelContent);
|
||||||
mainPanelRect = this.uiRoot.GetComponent<RectTransform>();
|
Rect = this.uiRoot.GetComponent<RectTransform>();
|
||||||
UIFactory.SetLayoutGroup<VerticalLayoutGroup>(this.uiRoot, false, false, true, true, 0, 2, 2, 2, 2, TextAnchor.UpperLeft);
|
UIFactory.SetLayoutGroup<VerticalLayoutGroup>(this.uiRoot, false, false, true, true, 0, 2, 2, 2, 2, TextAnchor.UpperLeft);
|
||||||
|
|
||||||
int id = this.uiRoot.transform.GetInstanceID();
|
int id = this.uiRoot.transform.GetInstanceID();
|
||||||
@ -177,9 +250,6 @@ namespace UnityExplorer.UI.Panels
|
|||||||
content = panelContent;
|
content = panelContent;
|
||||||
UIFactory.SetLayoutGroup<VerticalLayoutGroup>(this.content, false, false, true, true, 2, 2, 2, 2, 2, TextAnchor.UpperLeft);
|
UIFactory.SetLayoutGroup<VerticalLayoutGroup>(this.content, false, false, true, true, 2, 2, 2, 2, 2, TextAnchor.UpperLeft);
|
||||||
|
|
||||||
// always apply default pos and anchors (save data may only be partial)
|
|
||||||
SetTransformDefaults();
|
|
||||||
|
|
||||||
// Title bar
|
// Title bar
|
||||||
titleBar = UIFactory.CreateHorizontalGroup(content, "TitleBar", false, true, true, true, 2,
|
titleBar = UIFactory.CreateHorizontalGroup(content, "TitleBar", false, true, true, true, 2,
|
||||||
new Vector4(2, 2, 2, 2), new Color(0.06f, 0.06f, 0.06f));
|
new Vector4(2, 2, 2, 2), new Color(0.06f, 0.06f, 0.06f));
|
||||||
@ -210,7 +280,7 @@ namespace UnityExplorer.UI.Panels
|
|||||||
|
|
||||||
// Panel dragger
|
// Panel dragger
|
||||||
|
|
||||||
Dragger = new PanelDragger(titleBar.GetComponent<RectTransform>(), mainPanelRect, this);
|
Dragger = new PanelDragger(titleBar.GetComponent<RectTransform>(), Rect, this);
|
||||||
Dragger.OnFinishResize += OnFinishResize;
|
Dragger.OnFinishResize += OnFinishResize;
|
||||||
Dragger.OnFinishDrag += OnFinishDrag;
|
Dragger.OnFinishDrag += OnFinishDrag;
|
||||||
|
|
||||||
@ -223,6 +293,7 @@ namespace UnityExplorer.UI.Panels
|
|||||||
UIManager.SetPanelActive(this.PanelType, ShowByDefault);
|
UIManager.SetPanelActive(this.PanelType, ShowByDefault);
|
||||||
|
|
||||||
ApplyingSaveData = true;
|
ApplyingSaveData = true;
|
||||||
|
SetTransformDefaults();
|
||||||
// apply panel save data or revert to default
|
// apply panel save data or revert to default
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -234,6 +305,13 @@ namespace UnityExplorer.UI.Panels
|
|||||||
SetTransformDefaults();
|
SetTransformDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LayoutRebuilder.ForceRebuildLayoutImmediate(this.Rect);
|
||||||
|
|
||||||
|
// ensure initialized position is valid
|
||||||
|
EnsureValidSize();
|
||||||
|
EnsureValidPosition(this.Rect);
|
||||||
|
|
||||||
|
// update dragger and save data
|
||||||
Dragger.OnEndResize();
|
Dragger.OnEndResize();
|
||||||
|
|
||||||
// simple listener for saving enabled state
|
// simple listener for saving enabled state
|
||||||
@ -241,61 +319,11 @@ namespace UnityExplorer.UI.Panels
|
|||||||
{
|
{
|
||||||
SaveToConfigManager();
|
SaveToConfigManager();
|
||||||
};
|
};
|
||||||
|
|
||||||
ApplyingSaveData = false;
|
ApplyingSaveData = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ConstructUI(GameObject parent) => ConstructUI();
|
public override void ConstructUI(GameObject parent) => ConstructUI();
|
||||||
|
|
||||||
// SAVE DATA
|
|
||||||
|
|
||||||
public abstract void DoSaveToConfigElement();
|
|
||||||
|
|
||||||
public void SaveToConfigManager()
|
|
||||||
{
|
|
||||||
if (UIManager.Initializing)
|
|
||||||
return;
|
|
||||||
|
|
||||||
DoSaveToConfigElement();
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract string GetSaveDataFromConfigManager();
|
|
||||||
|
|
||||||
public bool ApplyingSaveData { get; set; }
|
|
||||||
|
|
||||||
public virtual string ToSaveData()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return $"{ShouldSaveActiveState && Enabled}" +
|
|
||||||
$"|{mainPanelRect.RectAnchorsToString()}" +
|
|
||||||
$"|{mainPanelRect.RectPositionToString()}";
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
ExplorerCore.LogWarning($"Exception generating Panel save data: {ex}");
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual void ApplySaveData(string data)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(data))
|
|
||||||
return;
|
|
||||||
|
|
||||||
var split = data.Split('|');
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
mainPanelRect.SetAnchorsFromString(split[1]);
|
|
||||||
mainPanelRect.SetPositionFromString(split[2]);
|
|
||||||
UIManager.SetPanelActive(this.PanelType, bool.Parse(split[0]));
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
ExplorerCore.LogWarning("Invalid or corrupt panel save data! Restoring to default.");
|
|
||||||
SetTransformDefaults();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region WINDOW ANCHORS / POSITION HELPERS
|
#region WINDOW ANCHORS / POSITION HELPERS
|
||||||
|
@ -123,6 +123,9 @@ namespace UnityExplorer.UI
|
|||||||
|
|
||||||
// Main UI Update loop
|
// Main UI Update loop
|
||||||
|
|
||||||
|
private static int lastScreenWidth;
|
||||||
|
private static int lastScreenHeight;
|
||||||
|
|
||||||
public static void Update()
|
public static void Update()
|
||||||
{
|
{
|
||||||
if (!CanvasRoot || Initializing)
|
if (!CanvasRoot || Initializing)
|
||||||
@ -150,6 +153,19 @@ namespace UnityExplorer.UI
|
|||||||
PanelDragger.UpdateInstances();
|
PanelDragger.UpdateInstances();
|
||||||
InputFieldRef.UpdateInstances();
|
InputFieldRef.UpdateInstances();
|
||||||
UIBehaviourModel.UpdateInstances();
|
UIBehaviourModel.UpdateInstances();
|
||||||
|
|
||||||
|
if (Screen.width != lastScreenWidth || Screen.height != lastScreenHeight)
|
||||||
|
{
|
||||||
|
lastScreenWidth = Screen.width;
|
||||||
|
lastScreenHeight = Screen.height;
|
||||||
|
|
||||||
|
foreach (var panel in UIPanels)
|
||||||
|
{
|
||||||
|
panel.Value.EnsureValidSize();
|
||||||
|
UIPanel.EnsureValidPosition(panel.Value.Rect);
|
||||||
|
panel.Value.Dragger.OnEndResize();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialization and UI Construction
|
// Initialization and UI Construction
|
||||||
@ -184,6 +200,9 @@ namespace UnityExplorer.UI
|
|||||||
|
|
||||||
ShowMenu = !ConfigManager.Hide_On_Startup.Value;
|
ShowMenu = !ConfigManager.Hide_On_Startup.Value;
|
||||||
|
|
||||||
|
lastScreenWidth = Screen.width;
|
||||||
|
lastScreenHeight = Screen.height;
|
||||||
|
|
||||||
Initializing = false;
|
Initializing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -292,9 +292,9 @@ namespace UnityExplorer.UI.Widgets.AutoComplete
|
|||||||
|
|
||||||
protected internal override void DoSetDefaultPosAndAnchors()
|
protected internal override void DoSetDefaultPosAndAnchors()
|
||||||
{
|
{
|
||||||
mainPanelRect.pivot = new Vector2(0f, 1f);
|
Rect.pivot = new Vector2(0f, 1f);
|
||||||
mainPanelRect.anchorMin = new Vector2(0.42f, 0.4f);
|
Rect.anchorMin = new Vector2(0.42f, 0.4f);
|
||||||
mainPanelRect.anchorMax = new Vector2(0.68f, 0.6f);
|
Rect.anchorMax = new Vector2(0.68f, 0.6f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ConstructPanelContent()
|
public override void ConstructPanelContent()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user