static void CreateSpriteMesh(MenuCommand menuCommand) { List <Texture2D> selectedTextures = Selection.objects.ToList().Where(o => o is Texture2D).ToList().ConvertAll(o => o as Texture2D); foreach (Texture2D texture in selectedTextures) { SpriteMeshUtils.CreateSpriteMesh(texture); } if (selectedTextures.Count == 0) { SpriteMeshUtils.CreateSpriteMesh(Selection.activeObject as Sprite); } }
static void ContextCreateSpriteMesh(MenuCommand menuCommand) { GameObject spriteRendererGO = Selection.activeGameObject; SpriteRenderer spriteRenderer = null; SpriteMesh spriteMesh = null; int sortingLayerID = 0; int sortingOrder = 0; if (spriteRendererGO) { spriteRenderer = spriteRendererGO.GetComponent <SpriteRenderer>(); } if (spriteRenderer && spriteRenderer.sprite) { sortingLayerID = spriteRenderer.sortingLayerID; sortingOrder = spriteRenderer.sortingOrder; SpriteMesh overrideSpriteMesh = SpriteMeshPostprocessor.GetSpriteMeshFromSprite(spriteRenderer.sprite); if (overrideSpriteMesh) { spriteMesh = overrideSpriteMesh; } else { spriteMesh = SpriteMeshUtils.CreateSpriteMesh(spriteRenderer.sprite); } } if (spriteMesh) { Undo.SetCurrentGroupName("create SpriteMeshInstance"); Undo.DestroyObjectImmediate(spriteRenderer); SpriteMeshInstance spriteMeshInstance = SpriteMeshUtils.CreateSpriteMeshInstance(spriteMesh, spriteRendererGO, true); spriteMeshInstance.sortingLayerID = sortingLayerID; spriteMeshInstance.sortingOrder = sortingOrder; Selection.activeGameObject = spriteRendererGO; } else { Debug.Log("Select a SpriteRenderer with a Sprite to convert to SpriteMesh"); } }
static void CreateSpriteMesh(MenuCommand menuCommand) { List <Texture2D> selectedTextures = Selection.objects.ToList().Where(o => o is Texture2D).ToList().ConvertAll(o => o as Texture2D); foreach (Texture2D texture in selectedTextures) { Debug.Log("Texture path"); SpriteMeshUtils.CreateSpriteMesh(texture); } if (selectedTextures.Count == 0) { // Yar, this be the one we want SpriteMeshUtils.CreateSpriteMesh(Selection.activeObject as Sprite); } }
static void ContextCreateSpriteMesh(MenuCommand menuCommand) { GameObject spriteRendererGO = Selection.activeGameObject; SpriteRenderer spriteRenderer = null; SpriteMesh spriteMesh = null; if (spriteRendererGO) { spriteRenderer = spriteRendererGO.GetComponent <SpriteRenderer>(); } if (spriteRenderer) { spriteMesh = SpriteMeshUtils.CreateSpriteMesh(spriteRenderer.sprite); } if (spriteMesh) { Undo.DestroyObjectImmediate(spriteRenderer); string spriteMeshPath = AssetDatabase.GetAssetPath(spriteMesh); Mesh mesh = AssetDatabase.LoadAssetAtPath(spriteMeshPath, typeof(Mesh)) as Mesh; Material material = AssetDatabase.LoadAssetAtPath(spriteMeshPath, typeof(Material)) as Material; SpriteMeshInstance spriteMeshRenderer = spriteRendererGO.AddComponent <SpriteMeshInstance>(); spriteMeshRenderer.spriteMesh = spriteMesh; MeshFilter meshFilter = spriteRendererGO.AddComponent <MeshFilter>(); meshFilter.sharedMesh = mesh; MeshRenderer renderer = spriteRendererGO.AddComponent <MeshRenderer>(); renderer.sharedMaterial = material; Undo.RegisterCreatedObjectUndo(meshFilter, "Create SpriteMesh"); Undo.RegisterCreatedObjectUndo(renderer, "Create SpriteMesh"); Selection.activeGameObject = spriteRendererGO; } else { Debug.Log("Select a SpriteRenderer with a Sprite to convert to SpriteMesh"); } }