Нема описа
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.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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.Aseprite
  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 SpriteMetaData() { }
  21. public SpriteMetaData(SpriteRect sr)
  22. {
  23. alignment = sr.alignment;
  24. border = sr.border;
  25. name = sr.name;
  26. pivot = GetPivotValue(sr.alignment, sr.pivot);
  27. rect = sr.rect;
  28. spriteID = sr.spriteID;
  29. }
  30. public static Vector2 GetPivotValue(SpriteAlignment alignment, Vector2 customOffset)
  31. {
  32. switch (alignment)
  33. {
  34. case SpriteAlignment.BottomLeft:
  35. return new Vector2(0f, 0f);
  36. case SpriteAlignment.BottomCenter:
  37. return new Vector2(0.5f, 0f);
  38. case SpriteAlignment.BottomRight:
  39. return new Vector2(1f, 0f);
  40. case SpriteAlignment.LeftCenter:
  41. return new Vector2(0f, 0.5f);
  42. case SpriteAlignment.Center:
  43. return new Vector2(0.5f, 0.5f);
  44. case SpriteAlignment.RightCenter:
  45. return new Vector2(1f, 0.5f);
  46. case SpriteAlignment.TopLeft:
  47. return new Vector2(0f, 1f);
  48. case SpriteAlignment.TopCenter:
  49. return new Vector2(0.5f, 1f);
  50. case SpriteAlignment.TopRight:
  51. return new Vector2(1f, 1f);
  52. case SpriteAlignment.Custom:
  53. return customOffset;
  54. }
  55. return Vector2.zero;
  56. }
  57. public static implicit operator UnityEditor.AssetImporters.SpriteImportData(SpriteMetaData value)
  58. {
  59. var output = new UnityEditor.AssetImporters.SpriteImportData();
  60. output.name = value.name;
  61. output.alignment = value.alignment;
  62. output.rect = value.rect;
  63. output.border = value.border;
  64. output.pivot = value.pivot;
  65. output.tessellationDetail = value.tessellationDetail;
  66. output.spriteID = value.spriteID.ToString();
  67. if (value.spriteOutline != null)
  68. output.outline = value.spriteOutline.Select(x => x.outline).ToList();
  69. return output;
  70. }
  71. }
  72. [Serializable]
  73. internal class SpriteOutline
  74. {
  75. [SerializeField]
  76. public Vector2[] outline;
  77. }
  78. }