| 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; |
| } |
| } |
| } |
|
|