No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SpriteData.cs 2.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using UnityEditor.U2D.Sprites;
  5. using UnityEngine;
  6. using UnityEngine.U2D;
  7. namespace UnityEditor.U2D.PSD
  8. {
  9. [Serializable]
  10. internal class SpriteMetaData : SpriteRect
  11. {
  12. public List<SpriteBone> spriteBone;
  13. public List<SpriteOutline> spriteOutline;
  14. public List<Vertex2DMetaData> vertices;
  15. public List<SpriteOutline> spritePhysicsOutline;
  16. public int[] indices;
  17. public Vector2Int[] edges;
  18. public float tessellationDetail;
  19. public Vector2Int uvTransform = Vector2Int.zero;
  20. public Vector2 spritePosition;
  21. public SpriteMetaData() {}
  22. public SpriteMetaData(SpriteRect sr)
  23. {
  24. alignment = sr.alignment;
  25. border = sr.border;
  26. name = sr.name;
  27. pivot = GetPivotValue(sr.alignment, sr.pivot);
  28. rect = sr.rect;
  29. spriteID = sr.spriteID;
  30. }
  31. public static Vector2 GetPivotValue(SpriteAlignment alignment, Vector2 customOffset)
  32. {
  33. switch (alignment)
  34. {
  35. case SpriteAlignment.BottomLeft:
  36. return new Vector2(0f, 0f);
  37. case SpriteAlignment.BottomCenter:
  38. return new Vector2(0.5f, 0f);
  39. case SpriteAlignment.BottomRight:
  40. return new Vector2(1f, 0f);
  41. case SpriteAlignment.LeftCenter:
  42. return new Vector2(0f, 0.5f);
  43. case SpriteAlignment.Center:
  44. return new Vector2(0.5f, 0.5f);
  45. case SpriteAlignment.RightCenter:
  46. return new Vector2(1f, 0.5f);
  47. case SpriteAlignment.TopLeft:
  48. return new Vector2(0f, 1f);
  49. case SpriteAlignment.TopCenter:
  50. return new Vector2(0.5f, 1f);
  51. case SpriteAlignment.TopRight:
  52. return new Vector2(1f, 1f);
  53. case SpriteAlignment.Custom:
  54. return customOffset;
  55. }
  56. return Vector2.zero;
  57. }
  58. public static implicit operator UnityEditor.AssetImporters.SpriteImportData(SpriteMetaData value)
  59. {
  60. var output = new UnityEditor.AssetImporters.SpriteImportData();
  61. output.name = value.name;
  62. output.alignment = value.alignment;
  63. output.rect = value.rect;
  64. output.border = value.border;
  65. output.pivot = value.pivot;
  66. output.tessellationDetail = value.tessellationDetail;
  67. output.spriteID = value.spriteID.ToString();
  68. if (value.spriteOutline != null)
  69. output.outline = value.spriteOutline.Select(x => x.outline).ToList();
  70. return output;
  71. }
  72. }
  73. [Serializable]
  74. internal class SpriteOutline
  75. {
  76. [SerializeField]
  77. public Vector2[] outline;
  78. }
  79. }