Keine Beschreibung
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

SpriteData.cs 3.1KB

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