- using UnityEngine;
- using UnityEngine.UI;
- namespace UnityEditor.UI
- {
- [CustomEditor(typeof(RawImage), true)]
- [CanEditMultipleObjects]
-
-
-
-
- public class RawImageEditor : GraphicEditor
- {
- SerializedProperty m_Texture;
- SerializedProperty m_UVRect;
- GUIContent m_UVRectContent;
- protected override void OnEnable()
- {
- base.OnEnable();
-
-
-
- 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;
- }
-
-
-
- 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;
- }
-
-
-
- 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());
- }
-
-
-
- public override string GetInfoString()
- {
- RawImage rawImage = target as RawImage;
-
- 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;
- }
- }
- }