public static string ConvertToTexturePackerFormat(string json, Vector2Int gridSize, Vector2Int padding, Vector2Int spacing) { try { //Unity cannot deserialize Dictionary, so we converted the dictionary to List using MiniJson json = ConvertToUnityJsonFormat(json); PreConvertedSpritesheetData v_preData = JsonUtility.FromJson <PreConvertedSpritesheetData>(json); TexturePackerData.SpriteDataObject v_postData = v_preData.ToTexturePacketDataObject(gridSize, padding, spacing); return(JsonUtility.ToJson(v_postData)); } catch (System.Exception p_exception) { Debug.Log("Failed to convert to EmojiOne\n: " + p_exception); } return(""); }
public virtual TexturePackerData.SpriteDataObject ToTexturePacketDataObject(Vector2Int p_gridSize, Vector2 p_padding, Vector2 p_spacing) { TexturePackerData.SpriteDataObject v_postData = new TexturePackerData.SpriteDataObject(); v_postData.frames = new List <TexturePackerData.Frame>(); 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 TexturePackerData.Frame(); v_postFrame.filename = v_preFrame.image; v_postFrame.rotated = false; v_postFrame.trimmed = false; v_postFrame.sourceSize = new TexturePackerData.SpriteSize() { w = p_gridSize.x, h = p_gridSize.y }; v_postFrame.spriteSourceSize = new TexturePackerData.SpriteFrame() { x = 0, y = 0, w = p_gridSize.x, h = p_gridSize.y }; v_postFrame.frame = new TexturePackerData.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); }