Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="spriteDataObject"></param>
        /// <param name="spriteCharacterTable"></param>
        /// <param name="spriteGlyphTable"></param>
        private static void PopulateSpriteTables(TexturePacker_JsonArray.SpriteDataObject spriteDataObject, List <TMP_SpriteCharacter> spriteCharacterTable, List <TMP_SpriteGlyph> spriteGlyphTable)
        {
            List <TexturePacker_JsonArray.Frame> importedSprites = spriteDataObject.frames;

            float atlasHeight = spriteDataObject.meta.size.h;

            for (int i = 0; i < importedSprites.Count; i++)
            {
                TexturePacker_JsonArray.Frame spriteData = importedSprites[i];

                TMP_SpriteGlyph spriteGlyph = new TMP_SpriteGlyph();
                spriteGlyph.index = (uint)i;

                spriteGlyph.metrics   = new GlyphMetrics((int)spriteData.frame.w, (int)spriteData.frame.h, -spriteData.frame.w * spriteData.pivot.x, spriteData.frame.h * spriteData.pivot.y, (int)spriteData.frame.w);
                spriteGlyph.glyphRect = new GlyphRect((int)spriteData.frame.x, (int)(atlasHeight - spriteData.frame.h - spriteData.frame.y), (int)spriteData.frame.w, (int)spriteData.frame.h);
                spriteGlyph.scale     = 1.0f;

                spriteGlyphTable.Add(spriteGlyph);

                TMP_SpriteCharacter spriteCharacter = new TMP_SpriteCharacter(0, spriteGlyph);
                spriteCharacter.name  = spriteData.filename.Split('.')[0];
                spriteCharacter.scale = 1.0f;

                spriteCharacterTable.Add(spriteCharacter);
            }
        }
Exemple #2
0
        void DrawEditorPanel()
        {
            // label
            GUILayout.Label("Import Settings", EditorStyles.boldLabel);

            EditorGUI.BeginChangeCheck();

            // Sprite Texture Selection
            m_JsonFile = EditorGUILayout.ObjectField("Sprite Data Source", m_JsonFile, typeof(TextAsset), false) as TextAsset;

            m_SpriteDataFormat = (SpriteAssetImportFormats)EditorGUILayout.EnumPopup("Import Format", m_SpriteDataFormat);

            // Sprite Texture Selection
            m_SpriteAtlas = EditorGUILayout.ObjectField("Sprite Texture Atlas", m_SpriteAtlas, typeof(Texture2D), false) as Texture2D;

            if (EditorGUI.EndChangeCheck())
            {
                m_CreationFeedback = string.Empty;
            }

            GUILayout.Space(10);

            GUI.enabled = m_JsonFile != null && m_SpriteAtlas != null && m_SpriteDataFormat != SpriteAssetImportFormats.None;

            // Create Sprite Asset
            if (GUILayout.Button("Create Sprite Asset"))
            {
                m_CreationFeedback = string.Empty;

                // Read json data file
                if (m_JsonFile != null)
                {
                    switch (m_SpriteDataFormat)
                    {
                    case SpriteAssetImportFormats.TexturePackerJsonArray:
                        TexturePacker_JsonArray.SpriteDataObject jsonData = null;
                        try
                        {
                            jsonData = JsonUtility.FromJson <TexturePacker_JsonArray.SpriteDataObject>(m_JsonFile.text);
                        }
                        catch
                        {
                            m_CreationFeedback = "The Sprite Data Source file [" + m_JsonFile.name + "] appears to be invalid or incorrectly formatted.";
                        }

                        if (jsonData != null && jsonData.frames != null && jsonData.frames.Count > 0)
                        {
                            int spriteCount = jsonData.frames.Count;

                            // Update import results
                            m_CreationFeedback  = "<b>Import Results</b>\n--------------------\n";
                            m_CreationFeedback += "<color=#C0ffff><b>" + spriteCount + "</b></color> Sprites were imported from file.";

                            if (m_SpriteAsset != null)
                            {
                                DestroyImmediate(m_SpriteAsset);
                            }

                            // Create new Sprite Asset
                            m_SpriteAsset = CreateInstance <TMP_SpriteAsset>();

                            // Assign sprite sheet / atlas texture to sprite asset
                            m_SpriteAsset.spriteSheet = m_SpriteAtlas;

                            List <TMP_SpriteGlyph>     spriteGlyphTable     = new List <TMP_SpriteGlyph>();
                            List <TMP_SpriteCharacter> spriteCharacterTable = new List <TMP_SpriteCharacter>();

                            PopulateSpriteTables(jsonData, spriteCharacterTable, spriteGlyphTable);

                            m_SpriteAsset.spriteCharacterTable = spriteCharacterTable;
                            m_SpriteAsset.spriteGlyphTable     = spriteGlyphTable;
                        }
                        break;
                    }
                }
            }

            GUI.enabled = true;

            // Creation Feedback
            GUILayout.Space(5);
            GUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Height(60));
            {
                EditorGUILayout.LabelField(m_CreationFeedback, TMP_UIStyleManager.label);
            }
            GUILayout.EndVertical();

            GUILayout.Space(5);
            GUI.enabled = m_JsonFile != null && m_SpriteAtlas && m_SpriteInfoList != null && m_SpriteAsset != null;
            if (GUILayout.Button("Save Sprite Asset") && m_JsonFile != null)
            {
                string filePath = EditorUtility.SaveFilePanel("Save Sprite Asset File", new FileInfo(AssetDatabase.GetAssetPath(m_JsonFile)).DirectoryName, m_JsonFile.name, "asset");

                if (filePath.Length == 0)
                {
                    return;
                }

                SaveSpriteAsset(filePath);
            }
            GUI.enabled = true;
        }
        void DrawEditorPanel()
        {
            // label
            GUILayout.Label("Import Settings", EditorStyles.boldLabel);

            EditorGUI.BeginChangeCheck();

            // Sprite Texture Selection
            m_JsonFile = EditorGUILayout.ObjectField("Sprite Data Source", m_JsonFile, typeof(TextAsset), false) as TextAsset;

            m_SpriteDataFormat = (EmojiSpriteAssetImportFormats)EditorGUILayout.EnumPopup("Import Format", m_SpriteDataFormat);

            //EditorGUILayout.HelpBox("Use this parameters to convert EmojiData Format to TexturePacket Json format", MessageType.Info);
            if (m_SpriteDataFormat == EmojiSpriteAssetImportFormats.EmojiDataJson)
            {
                using (new EditorGUILayout.VerticalScope("box"))
                {
                    EditorGUILayout.LabelField("EmojiOne Fields", EditorStyles.boldLabel);
                    GUILayout.Space(3);
                    m_gridSize         = EditorGUILayout.Vector2IntField("Grid Size", m_gridSize);
                    m_padding          = EditorGUILayout.Vector2IntField("Padding", m_padding);
                    m_spacing          = EditorGUILayout.Vector2IntField("Spacing", m_spacing);
                    m_globalGlyphScale = EditorGUILayout.Slider("Glyph Scale", m_globalGlyphScale, 0.01f, 5f);
                    GUILayout.Space(3);
                }
            }

            // Sprite Texture Selection
            m_SpriteAtlas = EditorGUILayout.ObjectField("Sprite Texture Atlas", m_SpriteAtlas, typeof(Texture2D), false) as Texture2D;

            if (EditorGUI.EndChangeCheck())
            {
                m_CreationFeedback = string.Empty;
            }

            GUILayout.Space(10);
            GUI.enabled = m_JsonFile != null && m_SpriteAtlas != null && m_SpriteDataFormat != EmojiSpriteAssetImportFormats.None;

            // Create Sprite Asset
            if (GUILayout.Button("Create Sprite Asset"))
            {
                m_CreationFeedback = string.Empty;

                var jsonFileText = m_JsonFile != null ? m_JsonFile.text : string.Empty;
                if (m_SpriteDataFormat == EmojiSpriteAssetImportFormats.EmojiDataJson)
                {
                    jsonFileText = EmojiDataConversorUtility.ConvertToTexturePackerFormat(jsonFileText, m_gridSize, m_padding, m_spacing);
                }

                m_CreatedWithEmojiJson = m_SpriteDataFormat == EmojiSpriteAssetImportFormats.EmojiDataJson;
                // Read json data file
                if (m_JsonFile != null && m_SpriteDataFormat != EmojiSpriteAssetImportFormats.None)
                {
#if TMP_2_1_0_PREVIEW_1_OR_NEWER
                    TexturePacker_JsonArray.SpriteDataObject sprites = JsonUtility.FromJson <TexturePacker_JsonArray.SpriteDataObject>(jsonFileText);
#else
                    TexturePacker.SpriteDataObject sprites = JsonUtility.FromJson <TexturePacker.SpriteDataObject>(jsonFileText);
#endif

                    if (sprites != null && sprites.frames != null && sprites.frames.Count > 0)
                    {
                        int spriteCount = sprites.frames.Count;

                        // Update import results
                        m_CreationFeedback  = "<b>Import Results</b>\n--------------------\n";
                        m_CreationFeedback += "<color=#C0ffff><b>" + spriteCount + "</b></color> Sprites were imported from file.";

                        // Create sprite info list
                        m_SpriteInfoList = CreateSpriteInfoList(sprites);
                    }
                }
            }

            GUI.enabled = true;

            // Creation Feedback
            GUILayout.Space(5);
            GUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Height(60));
            {
                EditorGUILayout.LabelField(m_CreationFeedback, TMP_UIStyleManager.label);
            }
            GUILayout.EndVertical();

            GUILayout.Space(5);
            GUI.enabled = m_JsonFile != null && m_SpriteAtlas && m_SpriteInfoList != null && m_SpriteInfoList.Count > 0;    // Enable Save Button if font_Atlas is not Null.
            if (GUILayout.Button("Save Sprite Asset") && m_JsonFile != null)
            {
                string filePath = EditorUtility.SaveFilePanel("Save Sprite Asset File", new FileInfo(AssetDatabase.GetAssetPath(m_JsonFile)).DirectoryName, m_JsonFile.name, "asset");

                if (filePath.Length == 0)
                {
                    return;
                }

                SaveSpriteAsset(filePath);
            }
            GUI.enabled = true;
        }
 List <TMP_Sprite> CreateSpriteInfoList(TexturePacker_JsonArray.SpriteDataObject spriteDataObject)