public void OverwriteMesh() { ISpriteEditorDataProvider mainSpriteDataProvider = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(mainSprite)) as ISpriteEditorDataProvider; mainSpriteDataProvider.InitSpriteEditorDataProvider(); ISpriteMeshDataProvider meshDataProvider = mainSpriteDataProvider.GetDataProvider <ISpriteMeshDataProvider>(); for (int i = 0; i < spritesToOverwrite.Length; i++) { ISpriteEditorDataProvider spriteDataProvider = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(spritesToOverwrite[i])) as ISpriteEditorDataProvider; spriteDataProvider.InitSpriteEditorDataProvider(); ISpriteMeshDataProvider meshDataToOverwrite = spriteDataProvider.GetDataProvider <ISpriteMeshDataProvider>(); GUID toOver = spritesToOverwrite[i].GetSpriteID(); GUID mainGuid = mainSprite.GetSpriteID(); meshDataToOverwrite.SetEdges(toOver, meshDataProvider.GetEdges(mainGuid)); meshDataToOverwrite.SetIndices(toOver, meshDataProvider.GetIndices(mainGuid)); meshDataToOverwrite.SetVertices(toOver, meshDataProvider.GetVertices(mainGuid)); spriteDataProvider.Apply(); //force SetBindPose AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(spritesToOverwrite[i])); } Debug.Log("Mesh overwritten"); }
private void DoApply() { bool reimport = true; if (m_CurrentModule != null) { reimport = m_CurrentModule.ApplyRevert(true); } m_SpriteDataProvider.Apply(); // Do this so that asset change save dialog will not show var originalValue = EditorPrefs.GetBool("VerifySavingAssets", false); EditorPrefs.SetBool("VerifySavingAssets", false); AssetDatabase.ForceReserializeAssets(new[] { m_SelectedAssetPath }, ForceReserializeAssetsOptions.ReserializeMetadata); EditorPrefs.SetBool("VerifySavingAssets", originalValue); if (reimport) { DoTextureReimport(m_SelectedAssetPath); } Repaint(); textureIsDirty = false; InitSelectedSpriteRect(); }
private static void OverwriteOutline(Sprite mainSprite, float tessellationDetail, List <Vector2[]> outlines) { ISpriteEditorDataProvider mainSpriteDataProvider = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(mainSprite)) as ISpriteEditorDataProvider; mainSpriteDataProvider.InitSpriteEditorDataProvider(); ISpritePhysicsOutlineDataProvider meshDataProvider = mainSpriteDataProvider.GetDataProvider <ISpritePhysicsOutlineDataProvider>(); GUID mainGuid = mainSprite.GetSpriteID(); meshDataProvider.SetOutlines(mainGuid, outlines); meshDataProvider.SetTessellationDetail(mainGuid, tessellationDetail); mainSpriteDataProvider.Apply(); //AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(mainSprite)); Debug.Log("Outlines overwritten for " + mainSprite.name); }
void OnPreprocessAsset() { ISpriteEditorDataProvider ai = GetSpriteEditorDataProvider(assetPath); if (ai != null) { var characterDataProvider = ai.GetDataProvider <ICharacterDataProvider>(); var boneDataProvider = ai.GetDataProvider <ISpriteBoneDataProvider>(); var characterData = characterDataProvider?.GetCharacterData(); if (characterData.HasValue && characterData.Value.boneReadOnly && boneDataProvider != null) { var skinningCache = Cache.Create <SkinningCache>(); skinningCache.Create(ai, new SkinningCachePersistentStateTemp()); SkinningModule.ApplyChanges(skinningCache, ai); ai.Apply(); } } }