123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- using UnityEngine;
- using UnityEngine.UI;
-
- namespace UnityEditor.UI
- {
- [CustomEditor(typeof(RawImage), true)]
- [CanEditMultipleObjects]
- /// <summary>
- /// Custom editor for RawImage.
- /// Extend this class to write a custom editor for a component derived from RawImage.
- /// </summary>
- public class RawImageEditor : GraphicEditor
- {
- SerializedProperty m_Texture;
- SerializedProperty m_UVRect;
- GUIContent m_UVRectContent;
-
- protected override void OnEnable()
- {
- base.OnEnable();
-
- // Note we have precedence for calling rectangle for just rect, even in the Inspector.
- // For example in the Camera component's Viewport Rect.
- // Hence sticking with Rect here to be consistent with corresponding property in the API.
- m_UVRectContent = EditorGUIUtility.TrTextContent("UV Rect");
-
- m_Texture = serializedObject.FindProperty("m_Texture");
- m_UVRect = serializedObject.FindProperty("m_UVRect");
-
- SetShowNativeSize(true);
- }
-
- public override void OnInspectorGUI()
- {
- serializedObject.Update();
-
- EditorGUILayout.PropertyField(m_Texture);
-
- AppearanceControlsGUI();
- RaycastControlsGUI();
- MaskableControlsGUI();
- EditorGUILayout.PropertyField(m_UVRect, m_UVRectContent);
- SetShowNativeSize(false);
- NativeSizeButtonGUI();
-
- serializedObject.ApplyModifiedProperties();
- }
-
- void SetShowNativeSize(bool instant)
- {
- base.SetShowNativeSize(m_Texture.objectReferenceValue != null, instant);
- }
-
- private static Rect Outer(RawImage rawImage)
- {
- Rect outer = rawImage.uvRect;
- outer.xMin *= rawImage.rectTransform.rect.width;
- outer.xMax *= rawImage.rectTransform.rect.width;
- outer.yMin *= rawImage.rectTransform.rect.height;
- outer.yMax *= rawImage.rectTransform.rect.height;
- return outer;
- }
-
- /// <summary>
- /// Allow the texture to be previewed.
- /// </summary>
-
- public override bool HasPreviewGUI()
- {
- RawImage rawImage = target as RawImage;
- if (rawImage == null)
- return false;
-
- var outer = Outer(rawImage);
- return outer.width > 0 && outer.height > 0;
- }
-
- /// <summary>
- /// Draw the Image preview.
- /// </summary>
-
- public override void OnPreviewGUI(Rect rect, GUIStyle background)
- {
- RawImage rawImage = target as RawImage;
- Texture tex = rawImage.mainTexture;
-
- if (tex == null)
- return;
-
- var outer = Outer(rawImage);
- SpriteDrawUtility.DrawSprite(tex, rect, outer, rawImage.uvRect, rawImage.canvasRenderer.GetColor());
- }
-
- /// <summary>
- /// Info String drawn at the bottom of the Preview
- /// </summary>
-
- public override string GetInfoString()
- {
- RawImage rawImage = target as RawImage;
-
- // Image size Text
- string text = string.Format("RawImage Size: {0}x{1}",
- Mathf.RoundToInt(Mathf.Abs(rawImage.rectTransform.rect.width)),
- Mathf.RoundToInt(Mathf.Abs(rawImage.rectTransform.rect.height)));
-
- return text;
- }
- }
- }
|