private List <TMP_Sprite> CreateSpriteInfoList(TexturePacker.SpriteDataObject spriteDataObject) { List <TexturePacker.SpriteData> frames = spriteDataObject.frames; List <TMP_Sprite> list = new List <TMP_Sprite>(); for (int i = 0; i < frames.Count; i++) { TMP_Sprite tMP_Sprite = new TMP_Sprite(); tMP_Sprite.id = i; tMP_Sprite.name = Path.GetFileNameWithoutExtension(frames[i].filename); tMP_Sprite.hashCode = TMP_TextUtilities.GetSimpleHashCode(tMP_Sprite.name); int num = 0; int num2 = tMP_Sprite.name.IndexOf('-'); num = (tMP_Sprite.unicode = ((num2 == -1) ? TMP_TextUtilities.StringToInt(tMP_Sprite.name) : TMP_TextUtilities.StringToInt(tMP_Sprite.name.Substring(num2 + 1)))); tMP_Sprite.x = frames[i].frame.x; tMP_Sprite.y = (float)m_SpriteAtlas.height - (frames[i].frame.y + frames[i].frame.h); tMP_Sprite.width = frames[i].frame.w; tMP_Sprite.height = frames[i].frame.h; tMP_Sprite.pivot = frames[i].pivot; tMP_Sprite.xAdvance = tMP_Sprite.width; tMP_Sprite.scale = 1f; tMP_Sprite.xOffset = 0f - tMP_Sprite.width * tMP_Sprite.pivot.x; tMP_Sprite.yOffset = tMP_Sprite.height - tMP_Sprite.height * tMP_Sprite.pivot.y; list.Add(tMP_Sprite); } return(list); }
private void DrawEditorPanel() { GUILayout.BeginVertical(); GUILayout.Label("<b>TMP Sprite Importer</b>", TMP_UIStyleManager.Section_Label); GUILayout.Label("Import Settings", TMP_UIStyleManager.Section_Label, GUILayout.Width(150f)); GUILayout.BeginVertical(TMP_UIStyleManager.TextureAreaBox); EditorGUI.BeginChangeCheck(); m_JsonFile = (EditorGUILayout.ObjectField("Sprite Data Source", m_JsonFile, typeof(TextAsset), false) as TextAsset); m_SpriteDataFormat = (SpriteAssetImportFormats)(object)EditorGUILayout.EnumPopup("Import Format", m_SpriteDataFormat); m_SpriteAtlas = (EditorGUILayout.ObjectField("Sprite Texture Atlas", m_SpriteAtlas, typeof(Texture2D), false) as Texture2D); if (EditorGUI.EndChangeCheck()) { m_CreationFeedback = string.Empty; } GUILayout.Space(10f); if (GUILayout.Button("Create Sprite Asset")) { m_CreationFeedback = string.Empty; if (m_SpriteDataFormat == SpriteAssetImportFormats.TexturePacker) { TexturePacker.SpriteDataObject spriteDataObject = JsonUtility.FromJson <TexturePacker.SpriteDataObject>(m_JsonFile.text); if (spriteDataObject != null && spriteDataObject.frames != null && spriteDataObject.frames.Count > 0) { int count = spriteDataObject.frames.Count; m_CreationFeedback = "<b>Import Results</b>\n--------------------\n"; m_CreationFeedback = m_CreationFeedback + "<color=#C0ffff><b>" + count + "</b></color> Sprites were imported from file."; m_SpriteInfoList = CreateSpriteInfoList(spriteDataObject); } } } GUILayout.Space(5f); GUILayout.BeginVertical(TMP_UIStyleManager.TextAreaBoxWindow, GUILayout.Height(60f)); EditorGUILayout.LabelField(m_CreationFeedback, TMP_UIStyleManager.Label); GUILayout.EndVertical(); GUILayout.Space(5f); GUI.enabled = ((m_SpriteInfoList != null) ? true : false); if (GUILayout.Button("Save Sprite Asset")) { string empty = string.Empty; empty = EditorUtility.SaveFilePanel("Save Sprite Asset File", new FileInfo(AssetDatabase.GetAssetPath(m_JsonFile)).DirectoryName, m_JsonFile.name, "asset"); if (empty.Length == 0) { return; } SaveSpriteAsset(empty); } GUILayout.EndVertical(); GUILayout.EndVertical(); }
/// <summary> /// /// </summary> List <TMP_Sprite> CreateSpriteInfoList(TexturePacker.SpriteDataObject spriteDataObject) { List <TexturePacker.SpriteData> importedSprites = spriteDataObject.frames; List <TMP_Sprite> spriteInfoList = new List <TMP_Sprite>(); for (int i = 0; i < importedSprites.Count; i++) { TMP_Sprite sprite = new TMP_Sprite(); sprite.id = i; sprite.name = Path.GetFileNameWithoutExtension(importedSprites[i].filename) ?? ""; sprite.hashCode = TMP_TextUtilities.GetSimpleHashCode(sprite.name); // Attempt to extract Unicode value from name int unicode; int indexOfSeperator = sprite.name.IndexOf('-'); if (indexOfSeperator != -1) { unicode = TMP_TextUtilities.StringToInt(sprite.name.Substring(indexOfSeperator + 1)); } else { unicode = TMP_TextUtilities.StringToInt(sprite.name); } sprite.unicode = unicode; sprite.x = importedSprites[i].frame.x; sprite.y = m_SpriteAtlas.height - (importedSprites[i].frame.y + importedSprites[i].frame.h); sprite.width = importedSprites[i].frame.w; sprite.height = importedSprites[i].frame.h; //Calculate sprite pivot position sprite.pivot = importedSprites[i].pivot; // Properties the can be modified sprite.xAdvance = sprite.width; sprite.scale = 1.0f; sprite.xOffset = 0 - (sprite.width * sprite.pivot.x); sprite.yOffset = sprite.height - (sprite.height * sprite.pivot.y); spriteInfoList.Add(sprite); } return(spriteInfoList); }
protected virtual string ConvertToEmojiOne(string p_json) { try { //Unity cannot deserialize Dictionary, so we converted the dictionary to List using MiniJson p_json = ConvertToUnityJsonFormat(p_json); PreConvertedSpritesheetData v_preData = JsonUtility.FromJson <PreConvertedSpritesheetData>(p_json); TexturePacker.SpriteDataObject v_postData = v_preData.ToTexturePacketDataObject(m_gridSize, m_padding, m_spacing); return(JsonUtility.ToJson(v_postData)); } catch (System.Exception p_exception) { Debug.Log("Failed to convert to EmojiOne\n: " + p_exception); } return(""); }
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.TexturePacker; // Create Sprite Asset if (GUILayout.Button("Create Sprite Asset")) { m_CreationFeedback = string.Empty; // Read json data file if (m_JsonFile != null && m_SpriteDataFormat == SpriteAssetImportFormats.TexturePacker) { TexturePacker.SpriteDataObject sprites = JsonUtility.FromJson <TexturePacker.SpriteDataObject>(m_JsonFile.text); 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; }
public virtual TexturePacker.SpriteDataObject ToTexturePacketDataObject(Vector2Int p_gridSize, Vector2 p_padding, Vector2 p_spacing) { TexturePacker.SpriteDataObject v_postData = new TexturePacker.SpriteDataObject(); v_postData.frames = new List <TexturePacker.SpriteData>(); if (frames != null) { var v_framesToCheck = new List <PreConvertedImgData>(); if (frames != null) { foreach (var v_frameToCheck in frames) { v_framesToCheck.Add(v_frameToCheck); } } for (int i = 0; i < v_framesToCheck.Count; i++) { var v_preFrame = v_framesToCheck[i]; //Add all variations in list to check (after the current PreFrame) var v_preFrameWithVariants = v_framesToCheck[i] as PreConvertedImgDataWithVariants; if (v_preFrameWithVariants != null && v_preFrameWithVariants.skin_variations != null && v_preFrameWithVariants.skin_variations.Count > 0) { for (int j = v_preFrameWithVariants.skin_variations.Count - 1; j >= 0; j--) { var v_skinVariantFrame = v_preFrameWithVariants.skin_variations[j]; if (v_skinVariantFrame != null) { v_framesToCheck.Insert(i + 1, v_skinVariantFrame); } } } //Create TexturePacker SpriteData var v_postFrame = new TexturePacker.SpriteData(); v_postFrame.filename = v_preFrame.image; v_postFrame.rotated = false; v_postFrame.trimmed = false; v_postFrame.sourceSize = new TexturePacker.SpriteSize() { w = p_gridSize.x, h = p_gridSize.y }; v_postFrame.spriteSourceSize = new TexturePacker.SpriteFrame() { x = 0, y = 0, w = p_gridSize.x, h = p_gridSize.y }; v_postFrame.frame = new TexturePacker.SpriteFrame() { x = (v_preFrame.sheet_x * (p_gridSize.x + p_spacing.x)) + p_padding.x, y = (v_preFrame.sheet_y * (p_gridSize.y + p_spacing.y)) + p_padding.y, w = p_gridSize.x, h = p_gridSize.y }; v_postFrame.pivot = new Vector2(0f, 0f); v_postData.frames.Add(v_postFrame); } } return(v_postData); }
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.SpriteDataObject spriteDataObject) #endif { #if TMP_2_1_0_PREVIEW_1_OR_NEWER List <TexturePacker_JsonArray.Frame> importedSprites = spriteDataObject.frames; #else List <TexturePacker.SpriteData> importedSprites = spriteDataObject.frames; #endif List <TMP_Sprite> spriteInfoList = new List <TMP_Sprite>(); for (int i = 0; i < importedSprites.Count; i++) { TMP_Sprite sprite = new TMP_Sprite(); sprite.id = i; sprite.name = Path.GetFileNameWithoutExtension(importedSprites[i].filename) ?? ""; sprite.hashCode = TMP_TextUtilities.GetSimpleHashCode(sprite.name); // Attempt to extract Unicode value from name int unicode; int indexOfSeparator = sprite.name.IndexOf('-'); if (indexOfSeparator != -1) { string substring = sprite.name.Substring(0, indexOfSeparator); #if TMP_1_4_0_OR_NEWER unicode = TMP_TextUtilities.StringHexToInt(substring); #else unicode = TMP_TextUtilities.StringToInt(substring); #endif } else { #if TMP_1_4_0_OR_NEWER unicode = TMP_TextUtilities.StringHexToInt(sprite.name); #else unicode = TMP_TextUtilities.StringToInt(sprite.name); #endif } sprite.unicode = unicode; sprite.x = importedSprites[i].frame.x; sprite.y = m_SpriteAtlas.height - (importedSprites[i].frame.y + importedSprites[i].frame.h); sprite.width = importedSprites[i].frame.w; sprite.height = importedSprites[i].frame.h; //Calculate sprite pivot position sprite.pivot = importedSprites[i].pivot; //Extra Properties //var scaledOffset = (sprite.height * ((m_globalGlyphScale - 1) * 0.5f)) * sprite.pivot.y; sprite.xAdvance = sprite.width; #if TMP_1_4_0_OR_NEWER sprite.scale = 1.0f; #else sprite.scale = m_globalGlyphScale; #endif sprite.xOffset = 0 - (sprite.width * sprite.pivot.x); sprite.yOffset = sprite.height - (sprite.height * sprite.pivot.y); spriteInfoList.Add(sprite); } return(spriteInfoList); }