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");
        }
Пример #2
0
        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);
        }
Пример #4
0
        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();
                }
            }
        }