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.

RawImageEditor.cs 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. namespace UnityEditor.UI
  4. {
  5. [CustomEditor(typeof(RawImage), true)]
  6. [CanEditMultipleObjects]
  7. /// <summary>
  8. /// Custom editor for RawImage.
  9. /// Extend this class to write a custom editor for a component derived from RawImage.
  10. /// </summary>
  11. public class RawImageEditor : GraphicEditor
  12. {
  13. SerializedProperty m_Texture;
  14. SerializedProperty m_UVRect;
  15. GUIContent m_UVRectContent;
  16. protected override void OnEnable()
  17. {
  18. base.OnEnable();
  19. // Note we have precedence for calling rectangle for just rect, even in the Inspector.
  20. // For example in the Camera component's Viewport Rect.
  21. // Hence sticking with Rect here to be consistent with corresponding property in the API.
  22. m_UVRectContent = EditorGUIUtility.TrTextContent("UV Rect");
  23. m_Texture = serializedObject.FindProperty("m_Texture");
  24. m_UVRect = serializedObject.FindProperty("m_UVRect");
  25. SetShowNativeSize(true);
  26. }
  27. public override void OnInspectorGUI()
  28. {
  29. serializedObject.Update();
  30. EditorGUILayout.PropertyField(m_Texture);
  31. AppearanceControlsGUI();
  32. RaycastControlsGUI();
  33. MaskableControlsGUI();
  34. EditorGUILayout.PropertyField(m_UVRect, m_UVRectContent);
  35. SetShowNativeSize(false);
  36. NativeSizeButtonGUI();
  37. serializedObject.ApplyModifiedProperties();
  38. }
  39. void SetShowNativeSize(bool instant)
  40. {
  41. base.SetShowNativeSize(m_Texture.objectReferenceValue != null, instant);
  42. }
  43. private static Rect Outer(RawImage rawImage)
  44. {
  45. Rect outer = rawImage.uvRect;
  46. outer.xMin *= rawImage.rectTransform.rect.width;
  47. outer.xMax *= rawImage.rectTransform.rect.width;
  48. outer.yMin *= rawImage.rectTransform.rect.height;
  49. outer.yMax *= rawImage.rectTransform.rect.height;
  50. return outer;
  51. }
  52. /// <summary>
  53. /// Allow the texture to be previewed.
  54. /// </summary>
  55. public override bool HasPreviewGUI()
  56. {
  57. RawImage rawImage = target as RawImage;
  58. if (rawImage == null)
  59. return false;
  60. var outer = Outer(rawImage);
  61. return outer.width > 0 && outer.height > 0;
  62. }
  63. /// <summary>
  64. /// Draw the Image preview.
  65. /// </summary>
  66. public override void OnPreviewGUI(Rect rect, GUIStyle background)
  67. {
  68. RawImage rawImage = target as RawImage;
  69. Texture tex = rawImage.mainTexture;
  70. if (tex == null)
  71. return;
  72. var outer = Outer(rawImage);
  73. SpriteDrawUtility.DrawSprite(tex, rect, outer, rawImage.uvRect, rawImage.canvasRenderer.GetColor());
  74. }
  75. /// <summary>
  76. /// Info String drawn at the bottom of the Preview
  77. /// </summary>
  78. public override string GetInfoString()
  79. {
  80. RawImage rawImage = target as RawImage;
  81. // Image size Text
  82. string text = string.Format("RawImage Size: {0}x{1}",
  83. Mathf.RoundToInt(Mathf.Abs(rawImage.rectTransform.rect.width)),
  84. Mathf.RoundToInt(Mathf.Abs(rawImage.rectTransform.rect.height)));
  85. return text;
  86. }
  87. }
  88. }