Exemplo n.º 1
0
        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");
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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");
            }
        }