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}