From 4ada0d2a13f97d8965a0f7d25947784799c62c77 Mon Sep 17 00:00:00 2001
From: Kochoyume <78918084+kochounoyume@users.noreply.github.com>
Date: Wed, 18 Sep 2024 00:35:35 +0900
Subject: [PATCH] Add SafeAreaElement
---
.../Runtime/{UI.meta => UGUI.meta} | 0
.../Runtime/{UI => UGUI}/EmptyGraphic.cs | 0
.../Runtime/{UI => UGUI}/EmptyGraphic.cs.meta | 0
.../{UI => UGUI}/MinimalUtility.UGUI.asmdef | 0
.../MinimalUtility.UGUI.asmdef.meta | 0
.../{UI => UGUI}/SelectablesGraphic.cs | 0
.../{UI => UGUI}/SelectablesGraphic.cs.meta | 0
.../Runtime/{UI => UGUI}/SimpleGauge.cs | 0
.../Runtime/{UI => UGUI}/SimpleGauge.cs.meta | 0
.../MinimalUtility/Runtime/UIToolkit.meta | 3 ++
.../UIToolkit/MinimalUtility.UIToolkit.asmdef | 22 ++++++++
.../MinimalUtility.UIToolkit.asmdef.meta | 7 +++
.../Runtime/UIToolkit/SafeAreaElement.cs | 53 +++++++++++++++++++
.../Runtime/UIToolkit/SafeAreaElement.cs.meta | 3 ++
14 files changed, 88 insertions(+)
rename Packages/MinimalUtility/Runtime/{UI.meta => UGUI.meta} (100%)
rename Packages/MinimalUtility/Runtime/{UI => UGUI}/EmptyGraphic.cs (100%)
rename Packages/MinimalUtility/Runtime/{UI => UGUI}/EmptyGraphic.cs.meta (100%)
rename Packages/MinimalUtility/Runtime/{UI => UGUI}/MinimalUtility.UGUI.asmdef (100%)
rename Packages/MinimalUtility/Runtime/{UI => UGUI}/MinimalUtility.UGUI.asmdef.meta (100%)
rename Packages/MinimalUtility/Runtime/{UI => UGUI}/SelectablesGraphic.cs (100%)
rename Packages/MinimalUtility/Runtime/{UI => UGUI}/SelectablesGraphic.cs.meta (100%)
rename Packages/MinimalUtility/Runtime/{UI => UGUI}/SimpleGauge.cs (100%)
rename Packages/MinimalUtility/Runtime/{UI => UGUI}/SimpleGauge.cs.meta (100%)
create mode 100644 Packages/MinimalUtility/Runtime/UIToolkit.meta
create mode 100644 Packages/MinimalUtility/Runtime/UIToolkit/MinimalUtility.UIToolkit.asmdef
create mode 100644 Packages/MinimalUtility/Runtime/UIToolkit/MinimalUtility.UIToolkit.asmdef.meta
create mode 100644 Packages/MinimalUtility/Runtime/UIToolkit/SafeAreaElement.cs
create mode 100644 Packages/MinimalUtility/Runtime/UIToolkit/SafeAreaElement.cs.meta
diff --git a/Packages/MinimalUtility/Runtime/UI.meta b/Packages/MinimalUtility/Runtime/UGUI.meta
similarity index 100%
rename from Packages/MinimalUtility/Runtime/UI.meta
rename to Packages/MinimalUtility/Runtime/UGUI.meta
diff --git a/Packages/MinimalUtility/Runtime/UI/EmptyGraphic.cs b/Packages/MinimalUtility/Runtime/UGUI/EmptyGraphic.cs
similarity index 100%
rename from Packages/MinimalUtility/Runtime/UI/EmptyGraphic.cs
rename to Packages/MinimalUtility/Runtime/UGUI/EmptyGraphic.cs
diff --git a/Packages/MinimalUtility/Runtime/UI/EmptyGraphic.cs.meta b/Packages/MinimalUtility/Runtime/UGUI/EmptyGraphic.cs.meta
similarity index 100%
rename from Packages/MinimalUtility/Runtime/UI/EmptyGraphic.cs.meta
rename to Packages/MinimalUtility/Runtime/UGUI/EmptyGraphic.cs.meta
diff --git a/Packages/MinimalUtility/Runtime/UI/MinimalUtility.UGUI.asmdef b/Packages/MinimalUtility/Runtime/UGUI/MinimalUtility.UGUI.asmdef
similarity index 100%
rename from Packages/MinimalUtility/Runtime/UI/MinimalUtility.UGUI.asmdef
rename to Packages/MinimalUtility/Runtime/UGUI/MinimalUtility.UGUI.asmdef
diff --git a/Packages/MinimalUtility/Runtime/UI/MinimalUtility.UGUI.asmdef.meta b/Packages/MinimalUtility/Runtime/UGUI/MinimalUtility.UGUI.asmdef.meta
similarity index 100%
rename from Packages/MinimalUtility/Runtime/UI/MinimalUtility.UGUI.asmdef.meta
rename to Packages/MinimalUtility/Runtime/UGUI/MinimalUtility.UGUI.asmdef.meta
diff --git a/Packages/MinimalUtility/Runtime/UI/SelectablesGraphic.cs b/Packages/MinimalUtility/Runtime/UGUI/SelectablesGraphic.cs
similarity index 100%
rename from Packages/MinimalUtility/Runtime/UI/SelectablesGraphic.cs
rename to Packages/MinimalUtility/Runtime/UGUI/SelectablesGraphic.cs
diff --git a/Packages/MinimalUtility/Runtime/UI/SelectablesGraphic.cs.meta b/Packages/MinimalUtility/Runtime/UGUI/SelectablesGraphic.cs.meta
similarity index 100%
rename from Packages/MinimalUtility/Runtime/UI/SelectablesGraphic.cs.meta
rename to Packages/MinimalUtility/Runtime/UGUI/SelectablesGraphic.cs.meta
diff --git a/Packages/MinimalUtility/Runtime/UI/SimpleGauge.cs b/Packages/MinimalUtility/Runtime/UGUI/SimpleGauge.cs
similarity index 100%
rename from Packages/MinimalUtility/Runtime/UI/SimpleGauge.cs
rename to Packages/MinimalUtility/Runtime/UGUI/SimpleGauge.cs
diff --git a/Packages/MinimalUtility/Runtime/UI/SimpleGauge.cs.meta b/Packages/MinimalUtility/Runtime/UGUI/SimpleGauge.cs.meta
similarity index 100%
rename from Packages/MinimalUtility/Runtime/UI/SimpleGauge.cs.meta
rename to Packages/MinimalUtility/Runtime/UGUI/SimpleGauge.cs.meta
diff --git a/Packages/MinimalUtility/Runtime/UIToolkit.meta b/Packages/MinimalUtility/Runtime/UIToolkit.meta
new file mode 100644
index 0000000..625f8b6
--- /dev/null
+++ b/Packages/MinimalUtility/Runtime/UIToolkit.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 43f91ed6e0c94ee08ca804778bd71ee9
+timeCreated: 1726584153
\ No newline at end of file
diff --git a/Packages/MinimalUtility/Runtime/UIToolkit/MinimalUtility.UIToolkit.asmdef b/Packages/MinimalUtility/Runtime/UIToolkit/MinimalUtility.UIToolkit.asmdef
new file mode 100644
index 0000000..4c0f9ed
--- /dev/null
+++ b/Packages/MinimalUtility/Runtime/UIToolkit/MinimalUtility.UIToolkit.asmdef
@@ -0,0 +1,22 @@
+{
+ "name": "MinimalUtility.UIToolkit",
+ "rootNamespace": "MinimalUtility.UIToolkit",
+ "references": [],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": true,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [
+ "ENABLE_UITOOLKIT"
+ ],
+ "versionDefines": [
+ {
+ "name": "com.unity.modules.uielements",
+ "expression": "",
+ "define": "ENABLE_UITOOLKIT"
+ }
+ ],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Packages/MinimalUtility/Runtime/UIToolkit/MinimalUtility.UIToolkit.asmdef.meta b/Packages/MinimalUtility/Runtime/UIToolkit/MinimalUtility.UIToolkit.asmdef.meta
new file mode 100644
index 0000000..59e133e
--- /dev/null
+++ b/Packages/MinimalUtility/Runtime/UIToolkit/MinimalUtility.UIToolkit.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: edfcb83fd91890f44ac6e363c3b244e9
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/MinimalUtility/Runtime/UIToolkit/SafeAreaElement.cs b/Packages/MinimalUtility/Runtime/UIToolkit/SafeAreaElement.cs
new file mode 100644
index 0000000..376cedc
--- /dev/null
+++ b/Packages/MinimalUtility/Runtime/UIToolkit/SafeAreaElement.cs
@@ -0,0 +1,53 @@
+using UnityEngine;
+using UnityEngine.UIElements;
+#if UNITY_EDITOR
+using Screen = UnityEngine.Device.Screen;
+#else
+using Screen = UnityEngine.Screen;
+#endif
+
+namespace MinimalUtility.UIToolkit
+{
+ ///
+ /// セーフエリアを考慮した.
+ ///
+ public class SafeAreaElement : VisualElement
+ {
+ ///
+ /// UIBuilderのLibraryに登録するためのUXML要素のファクトリクラス.
+ ///
+ public class SafeAreaFactory : UxmlFactory
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public SafeAreaElement()
+ {
+ style.flexGrow = 1;
+ style.flexShrink = 1;
+
+ RegisterCallback(OnGeometryChanged);
+
+#pragma warning disable SA1313
+ void OnGeometryChanged(GeometryChangedEvent _)
+#pragma warning restore SA1313
+ {
+#if UNITY_EDITOR
+ if (panel.GetType().Name == "EditorPanel") return;
+#endif
+ Rect safeArea = Screen.safeArea;
+ Vector2 leftTop
+ = RuntimePanelUtils.ScreenToPanel(panel, new (safeArea.xMin, Screen.height - safeArea.yMax));
+ Vector2 rightBottom
+ = RuntimePanelUtils.ScreenToPanel(panel, new (Screen.width - safeArea.xMax, safeArea.yMin));
+
+ style.marginLeft = leftTop.x;
+ style.marginTop = leftTop.y;
+ style.marginRight = rightBottom.x;
+ style.marginBottom = rightBottom.y;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/MinimalUtility/Runtime/UIToolkit/SafeAreaElement.cs.meta b/Packages/MinimalUtility/Runtime/UIToolkit/SafeAreaElement.cs.meta
new file mode 100644
index 0000000..c6f4fc1
--- /dev/null
+++ b/Packages/MinimalUtility/Runtime/UIToolkit/SafeAreaElement.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 148d5557949c4902bfbd5e6b1330c5df
+timeCreated: 1726584218
\ No newline at end of file