A game about forced loneliness, made by TACStudios
1using UnityEngine;
2using UnityEngine.U2D;
3using UnityEditor;
4
5namespace UnityEditor.U2D
6{
7 static internal class MenuItems
8 {
9 enum SpriteAssetMenuPriority : int
10 {
11 Triangle = 1,
12 Square,
13 Circle,
14 Capsule,
15 IsometricDiamond,
16 HexagonFlatTop,
17 HexagonPointTop,
18 Sliced9
19 }
20
21 enum SpriteAtlasAssetMenuPriority : int
22 {
23 SpriteAtlas = SpriteAssetMenuPriority.Triangle + 11
24 }
25
26 enum SpriteGameObjectMenuPriority : int
27 {
28 Triangle = 1,
29 Square,
30 Circle,
31 Capsule,
32 IsometricDiamond,
33 HexagonFlatTop,
34 HexagonPointTop,
35 Sliced9
36 }
37
38 enum PhysicsGameObjectMenuPriority : int
39 {
40 StaticSprite = 2,
41 DynamicSprite
42 }
43
44 enum SpriteMaskGameObjectMenuPriority : int
45 {
46 SpriteMask = 6
47 }
48
49 [MenuItem("Assets/Create/2D/Sprites/Triangle", priority = (int)SpriteAssetMenuPriority.Triangle)]
50 static void AssetsCreateSpritesTriangle(MenuCommand menuCommand)
51 {
52 ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Triangle.png");
53 }
54
55 [MenuItem("Assets/Create/2D/Sprites/Square", priority = (int)SpriteAssetMenuPriority.Square)]
56 static void AssetsCreateSpritesSquare(MenuCommand menuCommand)
57 {
58 ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Square.png");
59 }
60
61 [MenuItem("Assets/Create/2D/Sprites/Circle", priority = (int)SpriteAssetMenuPriority.Circle)]
62 static void AssetsCreateSpritesCircle(MenuCommand menuCommand)
63 {
64 ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Circle.png");
65 }
66
67 [MenuItem("Assets/Create/2D/Sprites/Capsule", priority = (int)SpriteAssetMenuPriority.Capsule)]
68 static void AssetsCreateSpritesCapsule(MenuCommand menuCommand)
69 {
70 ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Capsule.png");
71 }
72
73 [MenuItem("Assets/Create/2D/Sprites/Isometric Diamond", priority = (int)SpriteAssetMenuPriority.IsometricDiamond)]
74 static void AssetsCreateSpritesIsometricDiamond(MenuCommand menuCommand)
75 {
76 ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/IsometricDiamond.png");
77 }
78
79 [MenuItem("Assets/Create/2D/Sprites/Hexagon Flat Top", priority = (int)SpriteAssetMenuPriority.HexagonFlatTop)]
80 static void AssetsCreateSpritesHexagonFlatTop(MenuCommand menuCommand)
81 {
82 ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/HexagonFlatTop.png");
83 }
84
85 [MenuItem("Assets/Create/2D/Sprites/Hexagon Point Top", priority = (int)SpriteAssetMenuPriority.HexagonPointTop)]
86 static void AssetsCreateSpritesHexagonPointTop(MenuCommand menuCommand)
87 {
88 ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/HexagonPointTop.png");
89 }
90
91 [MenuItem("Assets/Create/2D/Sprites/9-Sliced", priority = (int)SpriteAssetMenuPriority.Sliced9)]
92 static void AssetsCreateSprites9Sliced(MenuCommand menuCommand)
93 {
94 ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/9Sliced.png");
95 }
96
97 internal class DoCreateSpriteAtlas : ProjectWindowCallback.EndNameEditAction
98 {
99 public int sides;
100 public override void Action(int instanceId, string pathName, string resourceFile)
101 {
102 var spriteAtlasAsset = new SpriteAtlasAsset();
103
104 UnityEditorInternal.InternalEditorUtility.SaveToSerializedFileAndForget(new Object[] { spriteAtlasAsset }, pathName, true);
105 AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
106 }
107 }
108
109 static private void CreateSpriteAtlas()
110 {
111 var icon = EditorGUIUtility.IconContent<SpriteAtlasAsset>().image as Texture2D;
112 DoCreateSpriteAtlas action = ScriptableObject.CreateInstance<DoCreateSpriteAtlas>();
113 ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, action, "New Sprite Atlas.spriteatlasv2", icon, null);
114 }
115
116 [MenuItem("Assets/Create/2D/Sprite Atlas", priority = (int)SpriteAtlasAssetMenuPriority.SpriteAtlas)]
117 static void AssetsCreateSpriteAtlas(MenuCommand menuCommand)
118 {
119 if (EditorSettings.spritePackerMode == SpritePackerMode.SpriteAtlasV2 || EditorSettings.spritePackerMode == SpritePackerMode.SpriteAtlasV2Build)
120 CreateSpriteAtlas();
121 else
122 ItemCreationUtility.CreateAssetObject<SpriteAtlas>("New Sprite Atlas.spriteatlas");
123 }
124
125 static GameObject CreateSpriteRendererGameObject(string name, string spritePath, MenuCommand menuCommand)
126 {
127 var go = ItemCreationUtility.CreateGameObject(name, menuCommand, new[] {typeof(SpriteRenderer)});
128 var sr = go.GetComponent<SpriteRenderer>();
129 sr.sprite = AssetDatabase.LoadAssetAtPath<Sprite>(spritePath);
130 return go;
131 }
132
133 [MenuItem("GameObject/2D Object/Sprites/Triangle", priority = (int)SpriteAssetMenuPriority.Triangle)]
134 static void GameObjectCreateSpritesTriangle(MenuCommand menuCommand)
135 {
136 CreateSpriteRendererGameObject("Triangle", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Triangle.png", menuCommand);
137 }
138
139 [MenuItem("GameObject/2D Object/Sprites/Square", priority = (int)SpriteAssetMenuPriority.Square)]
140 static void GameObjectCreateSpritesSquare(MenuCommand menuCommand)
141 {
142 CreateSpriteRendererGameObject("Square", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Square.png", menuCommand);
143 }
144
145 [MenuItem("GameObject/2D Object/Sprites/Circle", priority = (int)SpriteAssetMenuPriority.Circle)]
146 static void GameObjectCreateSpritesCircle(MenuCommand menuCommand)
147 {
148 CreateSpriteRendererGameObject("Circle", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Circle.png", menuCommand);
149 }
150
151 [MenuItem("GameObject/2D Object/Sprites/Capsule", priority = (int)SpriteAssetMenuPriority.Capsule)]
152 static void GameObjectCreateSpritesCapsule(MenuCommand menuCommand)
153 {
154 CreateSpriteRendererGameObject("Capsule", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Capsule.png", menuCommand);
155 }
156
157 [MenuItem("GameObject/2D Object/Sprites/Isometric Diamond", priority = (int)SpriteAssetMenuPriority.IsometricDiamond)]
158 static void GameObjectCreateSpritesIsometricDiamond(MenuCommand menuCommand)
159 {
160 CreateSpriteRendererGameObject("Isometric Diamond", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/IsometricDiamond.png", menuCommand);
161 }
162
163 [MenuItem("GameObject/2D Object/Sprites/Hexagon Flat Top", priority = (int)SpriteAssetMenuPriority.HexagonFlatTop)]
164 static void GameObjectCreateSpritesHexagonFlatTop(MenuCommand menuCommand)
165 {
166 CreateSpriteRendererGameObject("Hexagon Flat Top", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/HexagonFlatTop.png", menuCommand);
167 }
168
169 [MenuItem("GameObject/2D Object/Sprites/Hexagon Point Top", priority = (int)SpriteAssetMenuPriority.HexagonPointTop)]
170 static void GameObjectCreateSpritesHexagonPointedTop(MenuCommand menuCommand)
171 {
172 CreateSpriteRendererGameObject("Hexagon Point Top", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/HexagonPointTop.png", menuCommand);
173 }
174
175 [MenuItem("GameObject/2D Object/Sprites/9-Sliced", priority = (int)SpriteAssetMenuPriority.Sliced9)]
176 static void GameObjectCreateSprites9Sliced(MenuCommand menuCommand)
177 {
178 var go = CreateSpriteRendererGameObject("9-Sliced", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/9Sliced.png", menuCommand);
179 var sr = go.GetComponent<SpriteRenderer>();
180 if (sr.drawMode == SpriteDrawMode.Simple)
181 {
182 sr.drawMode = SpriteDrawMode.Tiled;
183 sr.tileMode = SpriteTileMode.Continuous;
184 }
185 }
186
187 [MenuItem("GameObject/2D Object/Physics/Static Sprite", priority = (int)PhysicsGameObjectMenuPriority.StaticSprite)]
188 static void GameObjectCreatePhysicsStaticSprite(MenuCommand menuCommand)
189 {
190 var go = ItemCreationUtility.CreateGameObject("Static Sprite", menuCommand, new[] {typeof(SpriteRenderer), typeof(BoxCollider2D), typeof(Rigidbody2D)});
191 var sr = go.GetComponent<SpriteRenderer>();
192 if (sr.sprite == null)
193 sr.sprite = AssetDatabase.LoadAssetAtPath<Sprite>(
194 "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Square.png");
195 var rigidBody = go.GetComponent<Rigidbody2D>();
196 rigidBody.bodyType = RigidbodyType2D.Static;
197 var boxCollider2D = go.GetComponent<BoxCollider2D>();
198 boxCollider2D.size = sr.sprite.rect.size / sr.sprite.pixelsPerUnit;
199 }
200
201 [MenuItem("GameObject/2D Object/Physics/Dynamic Sprite", priority = (int)PhysicsGameObjectMenuPriority.DynamicSprite)]
202 static void GameObjectCreatePhysicsDynamicSprite(MenuCommand menuCommand)
203 {
204 var go = ItemCreationUtility.CreateGameObject("Dynamic Sprite", menuCommand, new[] {typeof(SpriteRenderer), typeof(CircleCollider2D), typeof(Rigidbody2D)});
205 var sr = go.GetComponent<SpriteRenderer>();
206 if (sr.sprite == null)
207 sr.sprite = AssetDatabase.LoadAssetAtPath<Sprite>(
208 "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Circle.png");
209 var rigidBody = go.GetComponent<Rigidbody2D>();
210 rigidBody.bodyType = RigidbodyType2D.Dynamic;
211 }
212
213 [MenuItem("GameObject/2D Object/Sprite Mask", priority = (int)SpriteMaskGameObjectMenuPriority.SpriteMask)]
214 static void GameObjectCreateSpriteMask(MenuCommand menuCommand)
215 {
216 var go = ItemCreationUtility.CreateGameObject("Sprite Mask", menuCommand, new[] {typeof(SpriteMask)});
217 go.GetComponent<SpriteMask>().sprite = AssetDatabase.LoadAssetAtPath<Sprite>(
218 "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/CircleMask.png");
219 }
220 }
221}