summaryrefslogtreecommitdiff
path: root/Assets/UI_Extension/Editor/MenuOptions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/UI_Extension/Editor/MenuOptions.cs')
-rw-r--r--Assets/UI_Extension/Editor/MenuOptions.cs123
1 files changed, 123 insertions, 0 deletions
diff --git a/Assets/UI_Extension/Editor/MenuOptions.cs b/Assets/UI_Extension/Editor/MenuOptions.cs
new file mode 100644
index 0000000..2eef47e
--- /dev/null
+++ b/Assets/UI_Extension/Editor/MenuOptions.cs
@@ -0,0 +1,123 @@
+using UnityEditor;
+using UnityEngine;
+using UnityEngine.EventSystems;
+using UnityEngine.UI;
+
+namespace UIExt
+{
+ static internal class MenuOptions
+ {
+
+ [MenuItem("GameObject/UI Extensions/GridLayoutGroupExt", false,2000)]
+ static public void AddGridLayoutGroupExt(MenuCommand menuCommand)
+ {
+ Debug.Log("AddGridLayoutGroupExt");
+ }
+
+ //[MenuItem("GameObject/UI/Button", false, 2030)]
+ //static public void AddButton(MenuCommand menuCommand)
+ //{
+ // //GameObject go = DefaultControls.CreateButton(GetStandardResources());
+ // //PlaceUIElementRoot(go, menuCommand);
+ //}
+
+ //private static void PlaceUIElementRoot(GameObject element, MenuCommand menuCommand)
+ //{
+ // GameObject parent = menuCommand.context as GameObject;
+ // if (parent == null || parent.GetComponentInParent<Canvas>() == null)
+ // {
+ // parent = GetOrCreateCanvasGameObject();
+ // }
+
+ // string uniqueName = GameObjectUtility.GetUniqueNameForSibling(parent.transform, element.name);
+ // element.name = uniqueName;
+ // Undo.RegisterCreatedObjectUndo(element, "Create " + element.name);
+ // Undo.SetTransformParent(element.transform, parent.transform, "Parent " + element.name);
+ // GameObjectUtility.SetParentAndAlign(element, parent);
+ // if (parent != menuCommand.context) // not a context click, so center in sceneview
+ // SetPositionVisibleinSceneView(parent.GetComponent<RectTransform>(), element.GetComponent<RectTransform>());
+
+ // Selection.activeGameObject = element;
+ //}
+
+ //private static void SetPositionVisibleinSceneView(RectTransform canvasRTransform, RectTransform itemTransform)
+ //{
+ // // Find the best scene view
+ // SceneView sceneView = SceneView.lastActiveSceneView;
+ // if (sceneView == null && SceneView.sceneViews.Count > 0)
+ // sceneView = SceneView.sceneViews[0] as SceneView;
+
+ // // Couldn't find a SceneView. Don't set position.
+ // if (sceneView == null || sceneView.camera == null)
+ // return;
+
+ // // Create world space Plane from canvas position.
+ // Vector2 localPlanePosition;
+ // Camera camera = sceneView.camera;
+ // Vector3 position = Vector3.zero;
+ // if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRTransform, new Vector2(camera.pixelWidth / 2, camera.pixelHeight / 2), camera, out localPlanePosition))
+ // {
+ // // Adjust for canvas pivot
+ // localPlanePosition.x = localPlanePosition.x + canvasRTransform.sizeDelta.x * canvasRTransform.pivot.x;
+ // localPlanePosition.y = localPlanePosition.y + canvasRTransform.sizeDelta.y * canvasRTransform.pivot.y;
+
+ // localPlanePosition.x = Mathf.Clamp(localPlanePosition.x, 0, canvasRTransform.sizeDelta.x);
+ // localPlanePosition.y = Mathf.Clamp(localPlanePosition.y, 0, canvasRTransform.sizeDelta.y);
+
+ // // Adjust for anchoring
+ // position.x = localPlanePosition.x - canvasRTransform.sizeDelta.x * itemTransform.anchorMin.x;
+ // position.y = localPlanePosition.y - canvasRTransform.sizeDelta.y * itemTransform.anchorMin.y;
+
+ // Vector3 minLocalPosition;
+ // minLocalPosition.x = canvasRTransform.sizeDelta.x * (0 - canvasRTransform.pivot.x) + itemTransform.sizeDelta.x * itemTransform.pivot.x;
+ // minLocalPosition.y = canvasRTransform.sizeDelta.y * (0 - canvasRTransform.pivot.y) + itemTransform.sizeDelta.y * itemTransform.pivot.y;
+
+ // Vector3 maxLocalPosition;
+ // maxLocalPosition.x = canvasRTransform.sizeDelta.x * (1 - canvasRTransform.pivot.x) - itemTransform.sizeDelta.x * itemTransform.pivot.x;
+ // maxLocalPosition.y = canvasRTransform.sizeDelta.y * (1 - canvasRTransform.pivot.y) - itemTransform.sizeDelta.y * itemTransform.pivot.y;
+
+ // position.x = Mathf.Clamp(position.x, minLocalPosition.x, maxLocalPosition.x);
+ // position.y = Mathf.Clamp(position.y, minLocalPosition.y, maxLocalPosition.y);
+ // }
+
+ // itemTransform.anchoredPosition = position;
+ // itemTransform.localRotation = Quaternion.identity;
+ // itemTransform.localScale = Vector3.one;
+ //}
+
+ //// Helper function that returns a Canvas GameObject; preferably a parent of the selection, or other existing Canvas.
+ //static public GameObject GetOrCreateCanvasGameObject()
+ //{
+ // GameObject selectedGo = Selection.activeGameObject;
+
+ // // Try to find a gameobject that is the selected GO or one if its parents.
+ // Canvas canvas = (selectedGo != null) ? selectedGo.GetComponentInParent<Canvas>() : null;
+ // if (canvas != null && canvas.gameObject.activeInHierarchy)
+ // return canvas.gameObject;
+
+ // // No canvas in selection or its parents? Then use just any canvas..
+ // canvas = Object.FindObjectOfType(typeof(Canvas)) as Canvas;
+ // if (canvas != null && canvas.gameObject.activeInHierarchy)
+ // return canvas.gameObject;
+
+ // // No canvas in the scene at all? Then create a new one.
+ // return MenuOptions.CreateNewUI();
+ //}
+ //static public GameObject CreateNewUI()
+ //{
+ // // Root for the UI
+ // var root = new GameObject("Canvas");
+ // root.layer = LayerMask.NameToLayer(kUILayerName);
+ // Canvas canvas = root.AddComponent<Canvas>();
+ // canvas.renderMode = RenderMode.ScreenSpaceOverlay;
+ // root.AddComponent<CanvasScaler>();
+ // root.AddComponent<GraphicRaycaster>();
+ // Undo.RegisterCreatedObjectUndo(root, "Create " + root.name);
+
+ // // if there is no event system add one...
+ // CreateEventSystem(false);
+ // return root;
+ //}
+ }
+
+} \ No newline at end of file