Exemplo n.º 1
0
        static void Upgrade_003(SerializedObject spriteMeshSO)
        {
            SpriteMesh     spriteMesh     = spriteMeshSO.targetObject as SpriteMesh;
            SpriteMeshData spriteMeshData = SpriteMeshUtils.LoadSpriteMeshData(spriteMesh);

            if (spriteMesh.sprite && spriteMeshData)
            {
                TextureImporter textureImporter =
                    AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(spriteMesh.sprite)) as TextureImporter;

                float maxImporterSize = textureImporter.maxTextureSize;

                int width  = 1;
                int height = 1;

                SpriteMeshUtils.GetWidthAndHeight(textureImporter, ref width, ref height);

                int maxSize = Mathf.Max(width, height);

                float factor = maxSize / maxImporterSize;

                if (factor > 1f)
                {
                    SerializedObject   spriteMeshDataSO  = new SerializedObject(spriteMeshData);
                    SerializedProperty smdPivotPointProp = spriteMeshDataSO.FindProperty("m_PivotPoint");
                    SerializedProperty smdVerticesProp   = spriteMeshDataSO.FindProperty("m_Vertices");
                    SerializedProperty smdHolesProp      = spriteMeshDataSO.FindProperty("m_Holes");

                    spriteMeshDataSO.Update();

                    smdPivotPointProp.vector2Value = spriteMeshData.pivotPoint * factor;

                    for (int i = 0; i < spriteMeshData.vertices.Length; ++i)
                    {
                        smdVerticesProp.GetArrayElementAtIndex(i).vector2Value = spriteMeshData.vertices[i] * factor;
                    }

                    for (int i = 0; i < spriteMeshData.holes.Length; ++i)
                    {
                        smdHolesProp.GetArrayElementAtIndex(i).vector2Value = spriteMeshData.holes[i] * factor;
                    }

                    spriteMeshDataSO.ApplyModifiedProperties();

                    EditorUtility.SetDirty(spriteMeshData);
                }
            }
        }