public void ApplyChanges() { if (spriteMeshData) { spriteMeshData.vertices = m_TexVertices.ToArray(); spriteMeshData.boneWeights = boneWeights.ToArray(); spriteMeshData.edges = indexedEdges.ToArray(); spriteMeshData.holes = holes.ConvertAll(h => h.vertex).ToArray(); spriteMeshData.indices = indices.ToArray(); spriteMeshData.bindPoses = bindPoses.ToArray(); spriteMeshData.pivotPoint = pivotPoint; SpriteMeshUtils.DestroyBlendShapes(spriteMeshData, false, ""); SetBlendShapesFromCache(); EditorUtility.SetDirty(spriteMeshData); string spriteAssetPath = AssetDatabase.GetAssetPath(spriteMesh.sprite); SpriteMeshUtils.UpdateAssets(spriteMesh, spriteMeshData); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); TextureImporter textureImporter = AssetImporter.GetAtPath(spriteAssetPath) as TextureImporter; textureImporter.userData = textureImporter.assetTimeStamp.ToString(); AssetDatabase.StartAssetEditing(); AssetDatabase.ImportAsset(spriteAssetPath); AssetDatabase.StopAssetEditing(); isDirty = false; } if (spriteMeshInstance) { SpriteMeshUtils.UpdateRenderer(spriteMeshInstance, false); } }
override public void OnInspectorGUI() { Sprite oldSprite = m_SpriteProperty.objectReferenceValue as Sprite; EditorGUI.BeginChangeCheck(); serializedObject.Update(); EditorGUILayout.PropertyField(m_SpriteProperty); serializedObject.ApplyModifiedProperties(); if (EditorGUI.EndChangeCheck()) { Sprite sprite = m_SpriteProperty.objectReferenceValue as Sprite; SpriteMeshUtils.UpdateAssets(target as SpriteMesh); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); AssetDatabase.StartAssetEditing(); if (oldSprite) { AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(oldSprite)); } AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(sprite)); AssetDatabase.StopAssetEditing(); } serializedObject.Update(); EditorGUI.BeginDisabledGroup(true); EditorGUILayout.PropertyField(m_SharedMeshProperty); EditorGUILayout.PropertyField(m_SharedMaterialsProperty, true); EditorGUI.EndDisabledGroup(); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Edit Sprite Mesh", GUILayout.Width(150f))) { SpriteMeshEditorWindow window = SpriteMeshEditorWindow.GetWindow(); window.UpdateFromSelection(); } GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); serializedObject.ApplyModifiedProperties(); }