192 lines
8.2 KiB
C#
192 lines
8.2 KiB
C#
namespace Shapes2D {
|
|
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
using UnityEngine.UI;
|
|
using UnityEngine.EventSystems;
|
|
|
|
public class MenuItems {
|
|
// thanks to flatuicolors.com
|
|
static Color[] colors = {
|
|
new Color(26 / 255f, 188 / 255f, 156 / 255f),
|
|
new Color(46 / 255f, 204 / 255f, 113 / 255f),
|
|
new Color(52 / 255f, 152 / 255f, 219 / 255f),
|
|
new Color(155 / 255f, 89 / 255f, 182 / 255f),
|
|
new Color(22 / 255f, 160 / 255f, 133 / 255f),
|
|
new Color(39 / 255f, 174 / 255f, 96 / 255f),
|
|
new Color(41 / 255f, 128 / 255f, 185 / 255f),
|
|
new Color(142 / 255f, 68 / 255f, 173 / 255f),
|
|
new Color(241 / 255f, 196 / 255f, 15 / 255f),
|
|
new Color(230 / 255f, 126 / 255f, 34 / 255f),
|
|
new Color(231 / 255f, 76 / 255f, 60 / 255f),
|
|
new Color(149 / 255f, 165 / 255f, 166 / 255f),
|
|
new Color(243 / 255f, 156 / 255f, 18 / 255f),
|
|
new Color(211 / 255f, 84 / 255f, 0 / 255f),
|
|
new Color(192 / 255f, 57 / 255f, 43 / 255f),
|
|
new Color(127 / 255f, 140 / 255f, 141 / 255f)
|
|
};
|
|
|
|
public static bool AddToSelected(GameObject go) {
|
|
if (Selection.activeTransform == null) {
|
|
Selection.activeTransform = go.transform;
|
|
return false;
|
|
}
|
|
go.transform.SetParent(Selection.activeTransform);
|
|
go.transform.Translate(Selection.activeTransform.position);
|
|
Selection.activeTransform = go.transform;
|
|
return true;
|
|
}
|
|
|
|
public static void AddToSelectedNonCanvas(GameObject go) {
|
|
if (Selection.activeGameObject == null) {
|
|
Selection.activeTransform = go.transform;
|
|
return;
|
|
}
|
|
if (Selection.activeGameObject.GetComponentInParent<Canvas>() == null) {
|
|
AddToSelected(go);
|
|
return;
|
|
}
|
|
Selection.activeTransform = go.transform;
|
|
}
|
|
|
|
public static bool AddToSelectedCanvas(GameObject go) {
|
|
if (Selection.activeGameObject == null)
|
|
return false;
|
|
if (Selection.activeGameObject.GetComponentInParent<Canvas>() == null)
|
|
return false;
|
|
return AddToSelected(go);
|
|
}
|
|
|
|
public static GameObject CreatePrefab(string name, bool withUndo = true) {
|
|
GameObject go = GameObject.Instantiate(
|
|
Resources.Load<GameObject>("Shapes2D/Prefabs/" + name));
|
|
go.name = name;
|
|
go.GetComponent<Shape>().settings.fillColor = colors[Random.Range(0, colors.Length)];
|
|
if (withUndo)
|
|
Undo.RegisterCreatedObjectUndo(go, "Create Shapes2D " + name);
|
|
return go;
|
|
}
|
|
|
|
private static Canvas CreateCanvas() {
|
|
Canvas canvas = new GameObject().AddComponent<Canvas>();
|
|
canvas.gameObject.AddComponent<GraphicRaycaster>();
|
|
canvas.name = "Canvas";
|
|
canvas.gameObject.layer = LayerMask.NameToLayer("UI");
|
|
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
|
|
if (GameObject.FindObjectOfType<EventSystem>() == null) {
|
|
GameObject es = new GameObject();
|
|
es.name = "Event System";
|
|
es.AddComponent<EventSystem>();
|
|
es.AddComponent<StandaloneInputModule>();
|
|
es.transform.SetParent(canvas.transform);
|
|
}
|
|
return canvas;
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Arc", false, 10)]
|
|
private static void CreateArc() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Arc"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Curve", false, 10)]
|
|
private static void CreateCurve() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Curve"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Donut", false, 10)]
|
|
private static void CreateDonut() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Donut"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Ellipse", false, 10)]
|
|
private static void CreateEllipse() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Ellipse"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Filled Path", false, 10)]
|
|
private static void CreateFilledPath() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Filled Path"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Line Path", false, 10)]
|
|
private static void CreateLinePath() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Line Path"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Pie", false, 10)]
|
|
private static void CreatePie() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Pie"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Polygon", false, 10)]
|
|
private static void CreatePolygon() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Polygon"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Rectangle", false, 10)]
|
|
private static void CreateRectangle() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Rectangle"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Rounded Rectangle", false, 10)]
|
|
private static void CreateRoundedRectangle() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Rounded Rectangle"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/Sprites/Triangle", false, 10)]
|
|
private static void CreateTriangle() {
|
|
MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Triangle"));
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/UI/Button", false, 10)]
|
|
private static void CreateButton() {
|
|
GameObject go = MenuItems.CreatePrefab("Button", false);
|
|
go.name = "Shapes2D Button";
|
|
if (MenuItems.AddToSelectedCanvas(go)) {
|
|
Undo.RegisterCreatedObjectUndo(go, "Create Shapes2D Button");
|
|
} else {
|
|
bool createdCanvas = false;
|
|
Canvas canvas = GameObject.FindObjectOfType<Canvas>();
|
|
if (canvas == null || !canvas.enabled || canvas.transform.parent != null) {
|
|
canvas = CreateCanvas();
|
|
createdCanvas = true;
|
|
}
|
|
go.transform.SetParent(canvas.transform);
|
|
Selection.activeTransform = go.transform;
|
|
if (createdCanvas)
|
|
Undo.RegisterCreatedObjectUndo(canvas.gameObject, "Create Shapes2D Button");
|
|
else
|
|
Undo.RegisterCreatedObjectUndo(go, "Create Shapes2D Button");
|
|
}
|
|
go.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
|
|
go.transform.localScale = new Vector3(1, 1, 1);
|
|
}
|
|
|
|
[MenuItem("GameObject/Shapes2D/UI/Panel", false, 10)]
|
|
private static void CreatePanel() {
|
|
GameObject go = MenuItems.CreatePrefab("Panel", false);
|
|
go.name = "Shapes2D Panel";
|
|
if (MenuItems.AddToSelectedCanvas(go)) {
|
|
Undo.RegisterCreatedObjectUndo(go, "Create Shapes2D Panel");
|
|
} else {
|
|
bool createdCanvas = false;
|
|
Canvas canvas = GameObject.FindObjectOfType<Canvas>();
|
|
if (canvas == null || !canvas.enabled || canvas.transform.parent != null) {
|
|
canvas = CreateCanvas();
|
|
createdCanvas = true;
|
|
}
|
|
go.transform.SetParent(canvas.transform);
|
|
Selection.activeTransform = go.transform;
|
|
if (createdCanvas)
|
|
Undo.RegisterCreatedObjectUndo(canvas.gameObject, "Create Shapes2D Panel");
|
|
else
|
|
Undo.RegisterCreatedObjectUndo(go, "Create Shapes2D Panel");
|
|
}
|
|
RectTransform rt = go.GetComponent<RectTransform>();
|
|
rt.offsetMin = new Vector2(0, 0);
|
|
rt.offsetMax = new Vector2(0, 0);
|
|
rt.transform.localScale = new Vector3(1, 1, 1);
|
|
}
|
|
}
|
|
|
|
} |