diff options
Diffstat (limited to 'Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs')
-rw-r--r-- | Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs b/Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs new file mode 100644 index 0000000..36e43b1 --- /dev/null +++ b/Assets/uGUI-2017.1/Editor/UI/RawImageEditor.cs @@ -0,0 +1,107 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace UnityEditor.UI +{ + /// <summary> + /// Editor class used to edit UI Images. + /// </summary> + [CustomEditor(typeof(RawImage), true)] + [CanEditMultipleObjects] + 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 = new GUIContent("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(); + 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; + } + } +} |